2012-02-29 122 views

回答

2

您是否在清除後交換幀?

清除操作取決於窗口的設置方式(雙緩衝或無),可能只會清除backbuffer。這使可見的前置緩衝區保持不變。

爲了使任何操作變得可見,您需要交換緩衝區。這取決於平臺以不同的方式完成,它可以是wglSwapBuffers,glxSwapBuffers或任何數量的其他;檢查你的文檔。

您或許可以通過使用單個緩衝區來避開該要求,但這會有相當大的性能影響。

+1

「,但這將會有相當大的性能影響。」雙緩衝不是性能方面的事情。雙緩衝用於避免渲染過程像單個緩衝幀緩衝區一樣可見,這會導致閃爍效果並且使得播放流暢的動畫變得不可行。 – datenwolf 2012-02-29 14:41:47

0

您是否使用深度緩衝區(glEnable(GL_DEPTH_TEST);)?如果是,嘗試也以清除緩衝區:

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
+0

不使用深度測試,我得到了glDisable(GL_DEPTH_TEST); – 2012-02-29 13:33:22

0

你有沒有設定明確的色彩搭配glClearColor?如果不是,請設置它,否則您的代碼看起來是正確的。

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

試過了,沒有工作。 – 2012-02-29 16:03:44

相關問題