2012-11-08 137 views
0

我目前的工作在OpenGL ES的渲染的2D游戏在Android的。我的精灵似乎能够正确渲染,但不幸的是,当我不想让它们渲染时,它们会保持在屏幕上。当我在缓冲区中画一个没有任何东西的框架时,我仍然可以看到以前绘制的精灵。的OpenGL ES缓冲区不干净

这是代码。

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会清理缓存,但这并不像它在这里。

该解决方案并没有为我工作如何明确地干净缓冲区要么Clearing/releasing OpenGL ES buffers

任何想法?由于渲染以前的精灵还会发生什么可能发生的另一个想法?

非常感谢您的耐心等待。

回答

1

,应清除颜色和深度缓冲:

gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); 
相关问题