1

openGl でテクスチャを使い始めたところ、奇妙な動作に気付きました。次の疑似コード例を参照してください。

int main()...
bindTexture1();
bindTexture2();
bindTexture3();

// None of these textures are actually used!

while(true) {
    begin();
    // draw stuff 
    end();
}

3 つのテクスチャを読み込んでバインドしていますが、現在はプリミティブを描画しているだけです。しかし、それらのプリミティブは表示されません。それらは次の場合に表示されます。

int main()...
bindTexture1();   // <- So the first bind() remains the only one
//bindTexture2();
//bindTexture3();

// None of these textures are actually used!

while(true) {
    begin();
    // draw again just primitve stuff but now it's visible
    end();
}

または

int main()...
bindTexture1();
bindTexture2();
bindTexture3();

// None of these textures are actually used!

while(true) {
    begin();
    bindTexture1();  // Binding texture 1 again
    // draw again just primitve stuff but now it's visible 
    end();
}

私の問題はこの glBindTexture 関数に関連していると思いますか?

4

1 に答える 1

1

固定パイプライン (opengl 1 および 2) で 2D テクスチャをレンダリングする場合の手順は次のとおりです。

glEnable( GL_TEXTURE_2D );

glBindTexture( GL_TEXTURE_2D, textureId );

// render
glBegin( GL_QUADS );

   glTexCoord2f( 0.0, 0.0 );
   glVertex2f( 0.0, 0.0 );
   glTexCoord2f( 1.0, 0.0 );
   glVertex2f( 1.0, 0.0 );
   glTexCoord2f( 1.0, 1.0 );
   glVertex2f( 1.0, 1.0 );
   glTexCoord2f( 0.0, 1.0 );
   glVertex2f( 0.0, 1.0 );

glEnd();

glDisable( GL_TEXTURE_2D );
于 2013-02-27T14:25:10.793 に答える