在與一些同事的討論中,我們想知道爲Android或iPhone開發的OpenGL工作是否有效互換,因爲兩者都支持規範。或者,在兩個平臺之間共享OpenGL的現實更多的是一種怪癖,調整,並不像人們希望的那樣容易。Android和iPhone的OpenGL
回答
OpenGL實現通常由兩部分組成: 1.平臺特定的部分。這通常與創建和顯示曲面有關。 2. OpenGL API。在Android,OpenGLES 1.0的情況下,這個部分在OpenGL特定實現的所有平臺上都是相同的。
這意味着你的OpenGL代碼的大部分應該很容易移植。在C中,你可能有glLoadIdentity();
在Android上的Java,像gl.glLoadIdentity();
因此,對於大部分代碼,您可以剪切和粘貼,然後搜索並替換前綴,如「gl」。
現在有趣的部分:你真的需要小心你編碼的版本是什麼。桌面OpenGL具有OpenGLES中不存在的API。還有一些特定於每個平臺的OpenGL數據類型。另外,你有1.0(例如Android)1.1(例如iPhone)2.0(例如iPhone GS)來處理。 API的差異往往與額外的硬件功能有關,所以它不像你可以編寫一些簡單的包裝代碼來模擬1.0/1.1中的2.0特性。
兩個平臺都使用OpenGL ES,但維基百科宣稱Android使用1.0,而iPhone使用1.1(原始版本和3G)2.0版本作爲3gs link。很可能至少有一些程序會使用不包含在1.0中的API函數,所以2(3)之間不會有完全的兼容性。
Android上的OpenGL ES根據Khronos Java GLES規範JSR239完成,並將GL調用包裝爲類似glinst.glBindBuffer(FloatBuffer.wrap(data)...) iPhone上的OpenGL ES使用庫存GL完成。 .h文件和相同的通話將只是看起來像glBindBuffer(數據...)
該代碼將不是互換的,會造成許多怪癖,你甚至在進入的差異全亂1.0 1.1和2.0之間蜜蜂。
- 1. openGL和iPhone上的按鈕
- 2. iPhone的OpenGL-ES:在OpenGL UISwipeGestureRecognizer
- 3. Android的端口iPhone(OpenGL/C++)遊戲
- 4. Android OpenGL ES和2D
- 5. Android OpenGL混合類似於iPhone
- 6. iPhone/iPad上的OpenGL和Quartz/CG
- 7. 的OpenGl和Android:90度
- 8. Android和PC上的OpenGL ES
- 9. iPhone + OpenGL + Touches:FPS drop
- 10. OpenGL ES For iPhone
- 11. iPhone OpenGL教程
- 12. iPhone OpenGL ES
- 13. Texture2D iPhone SDK openGL
- 14. Tabactivity Android和iPhone
- 15. Android OpenGL緩衝和glFlush
- 16. Android - 相機和OpenGL ES
- 17. Android OpenGL ES 1.0和GPU
- 18. 與Android傳感器和OpenGL
- 19. ConcurrentModificationException與Android和OpenGL ES 1.1
- 20. OpenGL和Android相對佈局
- 21. iphone opengl createFramebuffer問題
- 22. iPhone OpenGL ES Texture2D Masking
- 23. iPhone NSTimer OpenGL問題
- 24. Fullscreen texture iPhone OpenGL ES
- 25. 火效果opengl iphone
- 26. OpenGL ES iPhone紋理
- 27. Iphone opengl es - glu,glPushName
- 28. OpenGL ES的問題(iPhone)
- 29. 清理iPhone上的OpenGL後
- 30. iPhone 3GS OpenGL奇怪的bug
還應該補充一點,Android可以支持OGLES 1.1和2.0,具體取決於Andriod的版本。 – 2011-05-26 16:00:37