我試圖清除屏幕幀緩存 glClear(GL_COLOR_BUFFER_BIT);
OpenGL ES 2.0的iPhone - 在幀緩衝glClear什麼都不做
我想要的幀緩衝區變成黑色。
但這似乎沒有做任何事情,最後繪製的着色器仍然在屏幕上。
我的錯誤是什麼?
我試圖清除屏幕幀緩存 glClear(GL_COLOR_BUFFER_BIT);
OpenGL ES 2.0的iPhone - 在幀緩衝glClear什麼都不做
我想要的幀緩衝區變成黑色。
但這似乎沒有做任何事情,最後繪製的着色器仍然在屏幕上。
我的錯誤是什麼?
您是否在清除後交換幀?
清除操作取決於窗口的設置方式(雙緩衝或無),可能只會清除backbuffer。這使可見的前置緩衝區保持不變。
爲了使任何操作變得可見,您需要交換緩衝區。這取決於平臺以不同的方式完成,它可以是wglSwapBuffers
,glxSwapBuffers
或任何數量的其他;檢查你的文檔。
您或許可以通過使用單個緩衝區來避開該要求,但這會有相當大的性能影響。
您是否使用深度緩衝區(glEnable(GL_DEPTH_TEST);
)?如果是,嘗試也以清除緩衝區:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
不使用深度測試,我得到了glDisable(GL_DEPTH_TEST); – 2012-02-29 13:33:22
你有沒有設定明確的色彩搭配glClearColor
?如果不是,請設置它,否則您的代碼看起來是正確的。
glClearColor(0.0, 0.0, 0.0, 1.0); // Call before glClear()
試過了,沒有工作。 – 2012-02-29 16:03:44
「,但這將會有相當大的性能影響。」雙緩衝不是性能方面的事情。雙緩衝用於避免渲染過程像單個緩衝幀緩衝區一樣可見,這會導致閃爍效果並且使得播放流暢的動畫變得不可行。 – datenwolf 2012-02-29 14:41:47