【问题标题】:OpenGL ES buffers not cleanOpenGL ES 缓冲区不干净
【发布时间】:2012-11-08 08:29:42
【问题描述】:

我目前正在开发一个在 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 会清理缓冲区,但这里看起来不像。

这个解决方案对我也不起作用Clearing/releasing OpenGL ES buffers

关于如何明确清理缓冲区的任何想法?由于渲染以前的精灵仍然发生,可能会发生什么的另一种想法?

非常感谢您的耐心等待。

【问题讨论】:

    标签: java android opengl-es opengl-es-1.1


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-05
      • 2011-03-09
      • 2020-04-10
      • 2014-12-18
      相关资源
      最近更新 更多