0

私は現在、 AndroidのOpenGL ESでレンダリングされた 2D ゲームに取り組んでいます。私のスプライトは正しくレンダリングされているように見えますが、悲しいことに、レンダラーが必要ない場合でも画面に表示されたままになります。バッファに何もないフレームを描画すると、以前に描画されたスプライトが表示されます。

これがコードです。

public void renderFrame()
{
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
    gl.glEnable(GL10.GL_TEXTURE_2D);

    gl.glViewport(0, 0, viewPort.getWidth(), viewPort.getHeight());
    gl.glMatrixMode(GL10.GL_PROJECTION);
    gl.glLoadIdentity();
    gl.glOrthof(position.x - frustumWidth * zoom / 2, 
                position.x + frustumWidth * zoom/ 2, 
                position.y - frustumHeight * zoom / 2, 
                position.y + frustumHeight * zoom/ 2, 
                1, -1);
    gl.glMatrixMode(GL10.GL_MODELVIEW);
    gl.glLoadIdentity();

    gl.glEnable(GL10.GL_BLEND);
    gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);

    gl.glBindTexture(GL10.GL_TEXTURE_2D, textureId);

    /*
     *   Buffer filling code goes here
     */

    gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
    verticesIntBuffer.position(0);
    gl.glVertexPointer(2, GL10.GL_FLOAT, vertexSize, vertices);

    gl.glDrawElements(GL10.GL_TRIANGLES, 6, GL10.GL_UNSIGNED_SHORT,                     
                   shortBufferIndices);

    gl.glDisable(GL10.GL_BLEND);
}

glClearはバッファーを消去すると思いました、ここではそうではありません。

この解決策は私にとってはうまくいきませんでしたOpenGL ESバッファのクリア/解放

バッファを明示的にクリーンアップする方法についてのアイデアはありますか? 以前のスプライトのレンダリングがまだ発生しているために何が起こっているのかについての別のアイデアはありますか?

お待たせいたしました。

4

1 に答える 1

1

カラー バッファと深度バッファの両方をクリアする必要があります。

gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
于 2012-11-08T09:57:09.980 に答える