2014-09-20 86 views
0

是否有使用什麼區別,glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);glFlush()OpenGL的緩衝區,glFlush和glutSwapBuffers()

glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);glutSwapBuffers()

通過區別,我暗示在執行或顯示代碼方面有所不同?

+2

用戶將看到部分渲染的場景與單緩衝區,因爲您正在寫入顯示器從其獲取像素的相同緩衝區。 – 2014-09-20 14:46:06

回答

2

在現代平臺上存在巨大差異,因爲合成窗口管理器(例如Windows Vista +上的Aero)有效地擁有前端緩衝區。如果您繪製單緩衝區,則永遠不會發生緩衝區交換,並且最終結果是屏幕上不會顯示任何內容。

即使沒有合成窗口管理器,這也會影響混合GPU的某些實現(例如,Intel集成+ NVIDIA離散型筆記本電腦)。在這樣的系統上,緩衝區交換操作是將獨立GPU的幀緩衝區複製到集成的最終輸出。

在現代GPU上幾乎沒有理由使用單緩衝渲染。過去,必須維護兩個顏色緩衝區才能消耗大量內存,這也是針對三重緩衝的有力論據,但現在顏色緩衝區所需的內存量只是VRAM的一小部分。

+0

謝謝:)。我完全不知道這一切。 – APD 2014-09-23 15:54:41