2017-02-14 252 views
0

我試圖對Android模擬器的Nexus 6 API 24.使用GLSL支持OpenGL ES 3.0與OpenGL ES的上下文2.0我宣佈我的頂點着色器和片段着色器與無法創建的OpenGL ES 3.0上下文

"#version 300 es" 

但我得到錯誤:不支持的着色器版本。經過四處搜尋,我認爲可能改用OpenGL ES Context 3.0將解決我的問題。因此,我編輯我的GLES3JNIView.java(來自此示例:https://github.com/googlesamples/android-ndk/tree/master/gles3jni/app/src/main/java/com/android/gles3jni)。

更改從2上下文3

setEGLContextClientVersion(3); 

和編輯清單:

< uses-feature android:glEsVersion="0x00030000" android:required="true" /> 

但我遇到了另一個問題,當我運行的應用程序,它崩潰上推出。 我發現這些在logcat:

02-14 17:29:04.879 5546-5546/? I/art: Not late-enabling -Xcheck:jni (already on) 
02-14 17:29:04.879 5546-5546/? W/art: Unexpected CPU variant for X86 using defaults: x86 
02-14 17:29:05.215 5546-5568/com.android.gl2jni I/OpenGLRenderer: Initialized EGL, version 1.4 
02-14 17:29:05.215 5546-5568/com.android.gl2jni D/OpenGLRenderer: Swap behavior 1 
02-14 17:29:05.313 5546-5568/com.android.gl2jni E/EGL_emulation: tid 5568: eglSurfaceAttrib(1146): error 0x3009 (EGL_BAD_MATCH) 
02-14 17:29:05.313 5546-5568/com.android.gl2jni W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xa917dca0, error=EGL_BAD_MATCH 

[ 02-14 17:29:05.430 5546: 5565 D/   ] 
                    HostConnection::get() New Host Connection established 0xacd1d780, tid 5565 
02-14 17:29:05.435 5546-5565/com.android.gl2jni E/AndroidRuntime: FATAL EXCEPTION: GLThread 157 
                    Process: com.android.gl2jni, PID: 5546 
                    java.lang.IllegalArgumentException: eglChooseConfig failed 
                     at android.opengl.GLSurfaceView$BaseConfigChooser.chooseConfig(GLSurfaceView.java:865) 
                     at android.opengl.GLSurfaceView$EglHelper.start(GLSurfaceView.java:1036) 
                     at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1416) 
                     at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1253) 

我在做什麼錯?請幫助,先進的感謝。

回答

1

Android模擬器不支持OpenGL ES 3.0。

參見:

https://developer.android.com/ndk/guides/stable_apis.html

具體做法是:

注:Android模擬器不支持OpenGL ES 3.0的硬件 仿真。運行和測試使用此API的代碼需要真實的 設備,其硬件可支持OpenGL ES 3.0

+0

感謝您的回覆。順便說一句,我也發現在給定的鏈接: 注意:Android模擬器不支持OpenGL ES 2.0硬件仿真。運行和測試使用此API的代碼需要具有可支持OpenGL ES 2.0的硬件的真實設備。 但是,我使用的示例可以創建OpenGL ES 2.0上下文,並在manifest.xml中聲明OpenGL ES 2.0,沒有任何問題。這是給定鏈接中的某種錯誤,還是它不適用於OpenGL ES 2.0的GLSL? –