我正在尝试清除屏幕帧缓冲区
glClear(GL_COLOR_BUFFER_BIT);
我希望帧缓冲变黑。
但这似乎没有做任何事情,最后绘制的着色器仍在屏幕上。
我的错误是什么?
答案 0 :(得分:2)
清除后是否交换帧?
清除操作取决于窗口的设置方式(双缓冲或否),可能只清除后备缓冲区。这使前缓冲区可见,不变。
为了使任何操作可见,您需要交换缓冲区。这取决于平台,可以采用不同的方式,可以是wglSwapBuffers
,glxSwapBuffers
或任意数量的其他方式;检查你的文档。
您可以通过使用单个缓冲区来躲避该要求,但这会产生相当大的性能影响。
答案 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()