Problémy s glDrawTex_OES

hlasů
1

Nejsem si jistý, že jsem pomocí glDrawTex_OES správně. Ve skutečnosti, jsem si jistý, že nejsem, protože jsem stále černý obdélník na obrazovce spíše než zamýšlené textury.

Chcete-li získat hloupé body z cesty: Ano, řetězec GL Extension obsahuje OES_draw_texture token. Ano, textura je načten do paměti / etc. správně: zobrazuje v pohodě, kdybych mapovat polygonu.

Čtení různé kousky dokumentace najdu na to, vypadá to, že musím „Nastav [E] textury oříznutí obdélník ... via TexParameteriv () s pname rovnou TEXTURE_CROP_RECT_OES“. Podle tohoto příspěvku v Khronos fór (Google nejlepší dokumentaci lze najít pro mě), jejichž hodnoty, které jsou „Ucr, VCR, WCR, Hcr. To znamená, že levý / dole / šířka / výška“

Zde je vykreslení kód:

void SetUpCamera( int windowWidth, int windowHeight, bool ortho ) // only called once
{
  glViewport( 0, 0, windowWidth, windowHeight );
  glMatrixMode( GL_PROJECTION );
  glLoadIdentity();

  if( ortho )
  {
    float aspect = (float)windowWidth / (float)windowHeight;
    float halfHeight = 32;
    glOrthof( -halfHeight*aspect, halfHeight*aspect, -halfHeight, halfHeight, 1.0f, 100.0f );
  }
  else
  {
    mygluPerspective( 45.0f, (float)windowWidth / (float)windowHeight, 1.0f, 100.0f ); // I don't _actually_ have glu, but that's irrelevant--this does what you'd expect.
  }
}

void DrawTexture( int windowWidth, int windowHeight, int texID )
{
  // Clear back/depth buffer
  glClearColor( 1, 1, 1, 1 );
  glClearDepth( 1.0f );
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

  // Next 2 lines probably not necessary, but, you know, sanity check:
  glMatrixMode( GL_MODELVIEW );
  glLoadIdentity();

  // set up texture
  glBindTexture( GL_TEXTURE_2D, texID ); // texID is the glGenTexture result for a 64x64 2D RGB_8 texture - nothing crazy.
  GLint coords [] = {0, 0, 64, 64};
  glTexParameteriv( GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, coords );

  // blit? =(
  glDrawTexiOES( windowWidth / 2 - 32, windowHeight - 70, 10, 64, 64 );
}

Mám něco chybí jasné? Dělat něco prostě hloupý?

Položena 06/07/2010 v 06:51
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
2

Zřejmě problém je, že jste (nebo jsem, jak případ může být) nevoláte glColor () se všemi plnými barevných kanálů jako první. To se jeví jako chyba v implementaci pracuji s (Android, NDK), jako výchozí barva by měla být (1, 1, 1, 1). Zatím volání glColor4f (1, 1, 1, 1) je dostatečně věci do pořádku.

(Nemám jiné volání glColor v mém programu. Nejsem si jistý, jestli existuje nějaký jiný způsob, jak aktualizovat stávající barvu, ale textury vykreslit správně pomocí výchozí barvu a kreslení jim glEnableClientState (GL_TEXTURE_COORD_ARRAY) / glDrawArrays ())

Odpovězeno 06/07/2010 v 15:32
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more