是否可以混合使用OpenGL ES 1和OpenGL ES 2調用?假設你正在使用在OpenGL ES 1中實現了一些例程的庫,並且你現有的代碼庫是OpenGL ES 2.那麼假設它們在不同渲染過程中渲染,那麼這樣做會是一個好方法嗎?混合OpenGL ES 1和OpenGL ES 2
1
A
回答
4
OpenGL ES 2.0不向後兼容OpenGL ES 1.x.根據定義,非常多,這意味着2.0不是兼容與1.x.大部分。
根據語言和GL ES(您沒有聲明)的綁定,您可能會重新編譯爲ES 2.0編寫的代碼。或者初始化ES 2.0會導致所有GL功能在那裏被路由。這意味着如果ES 1.x和2.0共享某個函數,那麼調用該函數的代碼將調用任何GL ES版本初始化的代碼。再一次,你沒有說什麼語言,以及你如何初始化它。
ES中有一些功能與ES 1.1和ES 2.0的功能差不多。我會說紋理的初始化和設置沒有太大的改變(你應該閱讀規格,看看有多少改變)。而實際的數組繪圖調用(glDrawArrays
,glDrawElements
)或多或少是相同的。而像glViewport
,glDepthRangef
等一些核心組件是相同的。
但其他任何東西(如何使用頂點數組,立即模式等)是不同的和不兼容的。
4
您可以在同一個應用程序中混用OpenGL ES 2.0和OpenGL ES 1.1,但不能將來自兩種不同API的命令與單個上下文綁定混合使用。只要您在ES 2.0上下文綁定中發出僅ES 1.1的GL命令,反之亦然,您的應用程序就會崩潰,並且它不會很明顯,除非您意識到這一點,否則它會崩潰。
當創建上下文時,您必須選擇您正在使用的API,並在綁定該上下文時發出的每個GL命令都使用它。
因此,就在一個應用程序中混合使用這兩個API而言,沒有什麼能夠阻止您在一個線程上綁定ES 1.1上下文,並且在您擁有的同一個應用程序的該線程上只發出ES 1.1調用在另一個線程上的ES 2.0上下文,只有在該線程上發出的ES 2.0命令。
但是正如捉鬼者們說的那樣:「不要過河!」。
相關問題
- 1. OpenGL es 2.0混合問題
- 2. Alpha與OpenGL ES 2.0混合?
- 3. OpenGL ES 2.0的混合
- 4. OPENGL ES MatrixGrabber和GLU.gluUnproject()混亂
- 5. OpenGL ES:需要OpenGL ES(1.x和2.0)API列表
- 6. OpenGL或OpenGL ES
- 7. Opengl ES和texcoord
- 8. OpenGL-ES和Cg
- 9. OpenGL ES 1.x vs. 2.x:OpenGL ES 1.x還值得學習嗎?
- 10. OpenGL ES 1.0上的混合函數(Android)
- 11. OpenGL ES 2.0,與所有東西混合
- 12. alpha混合在opengl es不工作
- 13. 的OpenGL ES的Android混亂
- 14. Opengl ES混色模式
- 15. OpenGL vs OpenGL ES和OpenGL 1.x vs OpenGL 2.0要學什麼?
- 16. OpenGL ES 2.0:Alpha混合問題
- 17. 基於GLPaint的OpenGL ES混合問題
- 18. OpenGL ES - 粒子效應的混合
- 19. iPhone OpenGL ES不正確的alpha混合
- 20. OpenGL到OpenGL-ES - glRectf()
- 21. 照明和OpenGL ES
- 22. 從OpenGL ES 1.1過渡到OpenGL ES 2.0
- 23. iOS OpenGL ES與Android OpenGL ES兼容?
- 24. OpenGL ES 1.x着色器
- 25. OpenGL ES 1剪裁對象
- 26. 學習OpenGL ES 1.x
- 27. Android OpenGL ES和2D
- 28. 將OpenGL ES 2移植到OpenGL
- 29. OpenGL ES 2球體渲染
- 30. openGL ES警告