2017-02-14 6 views
0
私は

は、OpenGL ES 3.0コンテキスト

"#version 300 es" 
と私の頂点シェーダとフラグメントシェーダで宣言Androidのエミュレータネクサス6 API 24上のOpenGL ESコンテキスト2.0でのOpenGL ES 3.0のためのGLSLを使用するようにしようとしている

の作成に失敗しました。

しかし、私はエラーが発生しました:サポートされていないシェーダのバージョンです。周りを検索した後、OpenGL ES Context 3.0に変更すると問題が解決するかもしれないと思います。したがって、私は自分のGLES3JNIView.javaを編集します(このサンプルから:https://github.com/googlesamples/android-ndk/tree/master/gles3jni/app/src/main/java/com/android/gles3jni)。

変更

setEGLContextClientVersion(3); 

と2から3へのコンテキストとマニフェストを編集します。

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

しかし、私は別の問題に遭遇した私は、アプリケーションを実行すると、それは起動時にクラッシュ。 ログカットでこれらを見つけました:

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

OpenGL ES 3.0は、Androidエミュレータではサポートされていません。

参照:具体的に

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

注:Androidのエミュレータは、OpenGL ES 3.0ハードウェア エミュレーションをサポートしていません。このAPIを使用するコードを実行してテストするには、OpenGL ES 3.0をサポートできるハードウェアを搭載した デバイスが必要です。

+0

ご返信ありがとうございます。 Btw、私もこのリンクでこれを見つけました: 注:AndroidエミュレータはOpenGL ES 2.0ハードウェアエミュレーションをサポートしていません。このAPIを使用するコードを実行してテストするには、OpenGL ES 2.0をサポートできるハードウェアを備えた実際のデバイスが必要です。 しかし、私が使用している例では、OpenGL ES 2.0 Contextを作成し、OpenGL ES 2.0をmanifest.xmlに問題なく宣言できます。このリンクで何らかの誤りがありますか、OpenGL ES 2.0用のGLSLではうまく動作しませんか? –

関連する問題