OpenGL ES 2.0 iPhone - 在帧缓冲区上的glClear什么都不做

时间:2012-02-29 12:45:58

标签: iphone opengl-es

我正在尝试清除屏幕帧缓冲区 glClear(GL_COLOR_BUFFER_BIT);

我希望帧缓冲变黑。

但这似乎没有做任何事情,最后绘制的着色器仍在屏幕上。

我的错误是什么?

3 个答案:

答案 0 :(得分:2)

清除后是否交换帧?

清除操作取决于窗口的设置方式(双缓冲或否),可能只清除后备缓冲区。这使前缓冲区可见,不变。

为了使任何操作可见,您需要交换缓冲区。这取决于平台,可以采用不同的方式,可以是wglSwapBuffersglxSwapBuffers或任意数量的其他方式;检查你的文档。

您可以通过使用单个缓冲区来躲避该要求,但这会产生相当大的性能影响。

答案 1 :(得分:0)

您使用深度缓冲区(glEnable(GL_DEPTH_TEST);)吗?如果是,请尝试清除缓冲区:

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

答案 2 :(得分:0)

您是否使用glClearColor设置了清晰的颜色?如果不是,请设置它,否则您的代码看起来是正确的。

glClearColor(0.0, 0.0, 0.0, 1.0); // Call before glClear()