3

libgdx を使用して Android 用のゲームを作成しています。テクスチャ トーラスを描画するコードを次に示します。

Gdx.gl10.glPushMatrix();
Gdx.gl10.glTranslatef(center.x, center.y, 0);
Gdx.gl10.glRotatef(0, 0, 1, angle * 360f / (2f * (float)Math.PI));
texture.bind();
mesh.render(GL10.GL_TRIANGLE_STRIP);
Gdx.gl10.glPopMatrix();

...そして、ここに少しのテキストを描画するコードがあります:

spriteBatch.begin();
spriteBatch.setColor(1, 1, 1, 1);
float fps = 1f / Gdx.graphics.getDeltaTime();
font.draw(spriteBatch, "fps: " + fps, 0, 50);
spriteBatch.end();

コードの最初のビットは、フレームごとに機能し、コードの 2 番目のビットが実行されます。その後、最新の glMaterial のみを使用して、最初のビットのトライアングル ストリップがレンダリングされます。なぜこれが起こっているのですか?

更新:解決しました! SpriteBatch.end() が glDisable(GL_TEXTURE_2D) を呼び出していることがわかりました。ソースを読むしかなかった…

4

2 に答える 2

5

実際、Javadocs でもそう言っています。経験則: OpenGL ES に接続されたすべての libgdx クラスは、状態の最小量を変更し、状態の GL へのクエリはコストがかかるため、ほとんどの場合リセットされません。

于 2011-09-18T23:28:31.373 に答える