2013-10-16 46 views
2

使用GL ES 2可以使用Android的Vertex Array Objects ES擴展嗎?使用GL ES 2可以使用Android的Vertex Array Objects ES擴展嗎?

我期望在名爲GLES20Ext的類中找到VAO函數,就像我可以在GLES10Ext中找到ES 1擴展一樣,但我不能。

是否可以使用Android的Java GL ES 2綁定中的VAO?

如果不是,使用GLES2中最簡單的方法是使用NDK橋接擴展調用?這種綁定是否已經存在?

要求ES 3或ES 3支持尚未廣泛使用是否可行?

+1

理論上,這應該是可以從NDK(給定Android API級別9 - 2.3+)實現的。問題是EGL的實際Java綁定很糟糕 - 它們隱藏了'eglGetProcAddress(...)'這是暴露任何供應商擴展或任何Android GLES2.0綁定發生的事情所必需的是很多)。你需要做的是在受支持的擴展列表中查找「GL_OES_vertex_array_object」,然後使用NDK獲取過程地址......您可以使用Java來調用它,這樣做。 –

+0

簡單地返回一個函數指針到Java代碼並沒有讓你走得很遠 - 你仍然需要編組參數,拋出異常,並完成(自動生成的)函數包裝器所做的所有其他工作。動態生成字節碼是一種選擇,但在Android上並不簡單。使用NDK組件支持任意擴展更容易(也可能更高效)。 (如果你知道一個聰明的方法,AOSP總是會歡迎高質量的補丁。) – fadden

回答

3

沒有GLES20Ext.java。這可能是一個疏忽。

您將需要通過NDK創建自己的Java綁定。

GLES 3.0是比較新的,並且在大多數設備上尚不可用。目前的建議是針對2.0,並進行運行時檢查以利用3.0功能when they are available