OpenGL ES缓冲区不干净



我当前正在处理 opengl es android 中的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缓冲区

关于如何阐明清洁缓冲区的任何想法?关于渲染以前的精灵仍在发生的另一个想法?

非常感谢您的耐心配合。

您应该清除颜色和深度缓冲区:

gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

相关内容

  • 没有找到相关文章

最新更新