2012-11-08 7 views
0

OpenGL ES안드로이드에서 렌더링 된 2D 게임에서 현재 작업하고 있습니다. 내 스프라이트는 올바르게 렌더링되는 것처럼 보이지만 슬프게도 렌더러를 원하지 않으면 화면에 계속 표시됩니다. 버퍼에 아무것도없는 프레임을 그리면 이전에 그려진 스프라이트를 볼 수 있습니다.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);