Android OpenGL ES尚未實現的接口總結
最近在Android平臺上寫NDK程序,使用OpenGL ES(注意:這里是OpenGL ES 1.0和1.1版本),發現程序在運行過程中出現如下錯誤:
通過log,在android的源碼中的\frameworks\base\opengl\libs\EGL\目錄下有Loader.cpp文件,通過這 個文件我們可以發現,我們的OpenGL的調用都是通過加載實現了OpenGL
ES的dll,然后在該dll中查找我們調用的接口,如果接口沒有找到,EGL就會打印出log,如上所示。
Android實現的所有OpenGL ES的接口,在gl.h和glext.h中已經給出,但是真正有沒有實現還是另外一回事。本人通過實踐表明,下列的接口都是Android在OpenGL ES1.0和1.1版本中都沒有實現的,分別是:
1. glGetFloatv
2. glTexEnvi
3. glIsEnabled
我目前只發現這三個,也會還會有更多。如果大家在為Android開發NDK程序使用了OpenGL ES 1.0或1.1版本的過程中,出現了上述錯誤,那么請注意你是否調用了上述3個接口中的任意一個(或許還有更多)。
這么看來,算是被Google忽悠了一把,這么大的bug,也不吭一聲。順便抱怨一下NDK開發調試不方便(2.2版本以下的Android NDK程序,畢竟2.2還是很新,還不是主流),而且NDK r4沒有增量編譯,只有全部構建,對于比較大的程序,比如我現在手上的這個,就需要花費比較長的時間進行重新編譯。最后還是希望NDK開發能越來越方便、強大,以便更多的C/C++的程序員能投身其中。
posted on 2010-08-27 16:53 孔雀 閱讀(3890) 評論(4) 編輯 收藏 引用 所屬分類: Android