我正在閱讀Nehe OpenGL教程,並有一個關於顯示列表的教程。是否有任何理由使用它而不是「類和對象」方式?例如,創建類的立方體,然後只是簡單地寫cube.render(x,y,z); ?Opengl - 顯示列表與OOP
0
A
回答
3
想法是利用硬件和板載顯示列表處理。基本上,你會在圖形處理器的內存中創建顯示列表,然後通過發送一個命令來顯示整個列表,而不是在每次顯示對象時重新發送所有座標。這可以大幅降低CPU與GPU之間的帶寬需求。
實際上,它在很大程度上依賴於您正在使用的硬件和OpenGL實現。通過一些實現,顯示列表可以幫助您大幅提升性能 - 但在其他實施中,它基本上沒有任何優勢。
1
我在閱讀Nehe OpenGL教程,並且有關於顯示列表的教程。
我建議停止閱讀訥河。我從來沒有見過任何與Ne和相關的東西在stackoverflow上被提及,而我看到的教程使用了太多的特定於平臺的API。
取代NEHE,轉到OpenGL.org並檢查「書籍」部分。或者,第一版「OpenGL紅皮書」可在glprogramming.com處獲得。雖然它不包含OpenGL 4中的最新API,但通過「兼容性配置文件」,即使在最新版本的OpenGL中,所有可用的方法仍然可用。
是否有任何理由使用它來代替「類和對象」的方式?
你混淆了兩個不同的概念。顯示列表是OpenGL的方式來保存OpenGL調用序列,以便以後可以快速「召回」它們。取決於OpenGL的實現,它可能會提高應用程序的性能。顯示列表的使用與您的程序(OOP)的內部組織無關。您可以使用OOP並仍使用cube.render()中的顯示列表。或者你可以使用頂點緩衝對象或任何你想要的。或者你可以使用「非OOP」風格並仍然使用顯示列表。
1
顯示列表是在GPU級別預編譯的。 您自己的渲染功能是在CPU級別編譯的,其各個命令在運行時仍需要通過GPU。
這就像比較「存儲過程」與調用內聯SQL的自定義函數。 編譯存儲過程並在服務器端生成執行計劃,而自定義函數僅在客戶端組件中編譯。 「
相關問題
- 1. OpenGL - 顯示列表
- 2. 顯示列表和OpenGL狀態
- 3. 帶GLTesselated對象的顯示列表? (OpenGL)
- 4. 何時使用OpenGL顯示列表?
- 5. OpenGL:帶顯示列表的材質?
- 6. opengl重新編譯顯示列表
- 7. 顯示列表和VBO OpenGL/LWJGL
- 8. OpenGL - 顯示點陣列
- 9. 顯示列表 - 李與CSS
- 10. MySQL顯示錶名與列
- 11. Python OOP和列表
- 12. SDL2與OpenGL紋理顯示不正確
- 13. 你如何顯示與opengl的fps(android)
- 14. OpenGL和OOP程序結構
- 15. LWJGL的OpenGL顯示
- 16. OpenGL擡頭顯示
- 17. openGL視頻顯示
- 18. 顯示列表和轉換
- 19. 顯示列表
- 20. 顯示列表
- 21. 顯示列表
- 22. 列表顯示
- 23. 在OpenGL中刪除嵌套的顯示列表
- 24. OpenGL顯示列表:用於繪製2D精靈?
- 25. 使用Python在OpenGL中顯示列表的效率?
- 26. OpenGL不會釋放顯示列表內存
- 27. 如何在openGL顯示列表中投影/未投影
- 28. 是最適合此的顯示列表嗎? (OpenGL)
- 29. OpenGL的 - 從顯示列表轉換爲使用VBO
- 30. 宣佈所有顯示列表頭文件的OpenGL
」顯示列表在GPU級別預編譯。「不正確,這是不能保證的。存儲顯示列表的位置以及特定實現的方式,並未在OPenGL標準中定義。請閱讀標準。 – SigTerm
@SigTerm:OpenGL標準中的任何內容都不能保證在GPU或CPU上運行。但是這個答案清楚地說明了它是如何完成的*。所以,從我+1。 – ybungalobill