我工作的一個新的OpenGL應用程序,並且我知道,顯示列表將被棄用,在OpenGL 3.1(連同其他許多有用的功能,這(對我來說)似乎有點傻)並替換爲頂點緩衝區對象。我成功在NVidia卡上繪製了一個使用VBOs的三角形,但該示例未能在我的上網本上的Intel芯片上運行,因爲它不支持glGenBuffers。看來OpenGL存在一個關鍵缺陷(新舊GPU/GMA之間的兼容性損壞)。作爲一個小型企業,我的遊戲需要與儘可能多的系統兼容,但是我不希望我的程序不能在較新的顯卡上工作(由於它依賴於顯示列表,這些列表已從OpenGL 4.1中刪除規範)。這會給我對顯卡的最大支持(舊的和新的)。顯示列表或頂點緩衝區對象?維也納組織或顯示列表 - GPU兼容性
回答
如果您的應用程序上運行GMA,你一定有一個低多邊形數量。因此,在新顯卡的驅動程序中模擬顯示列表的效率低下不會成爲問題,它們有足夠的帶寬可供使用。
如果您仍然關心效率,請務必使用glVertexPointer
/glDrawArray
來最大化批量大小。這可以與顯示列表結合使用,但可以減少列表中單獨操作的次數,從而使仿真更少問題。
最壞的情況下,如果一些平臺真的不支持顯示列表,你可以用一個函數調用替換glCallList
。
您的英特爾網卡做,但只能通過ARB接口支持維也納組織。嘗試glGenBuffersARB
(同時將所有其他VBO代碼轉換爲使用ARB版本)。它將在nVidia和英特爾GMA上運行。
ARB接口與標準接口有什麼缺點?爲什麼有兩種不同的方式來繪製維也納國際組織? – IDWMaster 2011-05-04 00:02:32
ARB接口來自添加新功能(體系結構評審委員會)的建議,並在接口完成之前表示它們。在一個給定的驅動程序(支持這兩種驅動程序)中,通常ARB和常規接口的行爲幾乎相同(假設提案通過時規範沒有太大變化)。 – 2011-05-04 00:27:32
@IDWMaster:大多數OpenGL功能是作爲供應商擴展開始的,然後成爲ARB認可的擴展,然後最終被添加到核心規範的未來版本中。這可以防止核心規格混亂與失敗的功能。對擴展沒有後向兼容性要求,而核心接受的功能永遠存在(至少在兼容性配置文件中)。 – 2011-05-04 00:28:56
或者,您可以查詢OpenGL版本支持的系統,並相應地使用DisplayLists或VBO,而不是依靠一種方法來與每個OpenGL版本兼容。通過這種方式,您可以確定您正在使用最新,最高效和最快速的繪圖方式,無論系統支持何種方法(displaylists/VBO)。
此外,這樣的實施方式可以容易地擴展,以支持在,比方說,4.4的OpenGL或OpenGL 5.0未來繪圖方法。然而,這會導致多個代碼在功能上完成同樣的任務:告訴GPU要做什麼,這可能會增加代碼大小和複雜性。
- 1. 網變形和維也納組織
- 2. 重構使用OpenGL維也納組織
- 3. 維也納各組織在C#
- 4. 錯誤渲染維也納組織
- 5. 英特爾的GPU,發出帶有維也納各組織的,並SFML
- 6. 增添色彩維也納組織 - 最佳實踐
- 7. 在哪裏,什麼是維也納組織使用的「OpenGL的記憶」等
- 8. 從不同的維也納國際組織繪製的問題
- 9. Android遊戲GPU兼容性問題
- 10. Theano的GPU兼容性[NVidia GeForce 8800GT]
- 11. G ++ ABI兼容性列表
- 12. Unity,Xcode,兼容性列表?
- 13. 列表 - .NET兼容性?
- 14. 組織顯示來自表
- 15. 填補我的維也納各組織的最佳途徑是什麼?
- 16. Chrome VS Firefox img顯示兼容性
- 17. 視網膜顯示兼容性
- 18. Xamarin.Forms程序兼容性MasterDetail顯示
- 19. OpenGL的頂點着色器運行時問題(不使用維也納組織或紋理)
- 20. 三維數組顯示錶
- 21. iPhone 7和7 Plus兼容性並顯示應用商店的兼容性
- 22. SQL重新組織表SSRS顯示
- 23. jQuery代碼組織(也提示)
- 24. PLSQL_V2_COMPATIBILITY兼容性
- 25. HTML CSS列表樣式兼容性
- 26. 瀏覽器兼容性問題列表?
- 27. 維護向後兼容性iOS7
- 28. CSS顯示:表 - 兼容性問題與即
- 29. ie8兼容性
- 30. 維也納CL中的自定義線性運算符
它們在驅動程序中模擬,完全從GPU(包括驅動程序)中刪除,還是有必要使用「兼容性上下文」使其在GPU上工作? – IDWMaster 2011-05-03 23:51:53
@IDWMaster:支持的驅動程序(如果你支持GMA您必須使用1.5左右反正還是老版本的OpenGL的)當你請求一個兼容性方面。無論是100%仿真還是部分硬件加速都取決於芯片,但無論如何它應該跟上英特爾GMA可以處理的任何幾何尺寸。 – 2011-05-03 23:54:38
謝謝!不知道glDrawArray函數!這應該肯定會提高性能!我會在3分鐘內接受答案。 – IDWMaster 2011-05-03 23:54:51