我工作的一個新的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. 錯誤渲染維也納組織
- 3. 在哪裏,什麼是維也納組織使用的「OpenGL的記憶」等
- 4. 從不同的維也納國際組織繪製的問題
- 5. 視網膜顯示兼容性
- 6. Chrome VS Firefox img顯示兼容性
- 7. OpenGL的頂點着色器運行時問題(不使用維也納組織或紋理)
- 8. iPhone 7和7 Plus兼容性並顯示應用商店的兼容性
- 9. PLSQL_V2_COMPATIBILITY兼容性
- 10. HTML CSS列表樣式兼容性
- 11. 瀏覽器兼容性問題列表?
- 12. CSS顯示:表 - 兼容性問題與即
- 13. 維也納CL中的自定義線性運算符
- 14. 更改二維數組笨兼容性批量插入
- 15. php 5.3陣列兼容性
- 16. 兼容性
- 17. 二進制兼容性
- 18. DX11兼容性
- 19. JavaScript兼容性庫
- 20. DataContractJsonSerializer兼容性
- 21. Firefox兼容性
- 22. iPad兼容性
- 23. 組織顯示在列表視圖中的微調器
- 24. 兼容性
- 25. MSMQ兼容性
- 26. 如何在兩列顯示列表視圖中顯示二維字符串數組的內容?
- 27. ViewFlipper兼容性
- 28. GridLayout兼容性
- 29. LWJGL/OpenGL的:處理動態地形素與dyanmic LOD與維也納組織和VAOs
- 30. GWT MVP和SmartGWT兼容性
它們在驅動程序中模擬,完全從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