Galaxy S4上的OpenGL 3 Android 4.4.2

问题描述:

我是Android开发新手,所以我可能会错过一些东西。我的理解是,运行Android 4.4.2的三星Galaxy S4应该支持OpenGL ES 3.但是,当我拨打glGetString(GL_VERSION)(获得OpenGL ES 2.0上下文)后,我得到OpenGL ES 2.0 build [email protected]如果支持,我希望得到一个OpenGL ES 3.0字符串。Galaxy S4上的OpenGL 3 Android 4.4.2

如果我试图强制获取OpenGL ES 3.0上下文,我的呈现线程会被给出异常,并且日志消息为throwEglException tid=1477 createContext failed:

真正奇怪的是,如果我使用一个2.0范围内,OpenGL ES的3.0调用正常工作(如数组缓冲区),我刚刚得到消息记录呼叫是not implemented. !! ??

AndroidManifest.xml有:

<uses-sdk 
    android:minSdkVersion="19" 
    android:targetSdkVersion="19" /> 
<uses-feature android:glEsVersion="0x00030000" android:required="true" /> 

有什么事我不设置让我OpenGL 3.0的? Galaxy S4(Verizon BTW)上的Android 4.4.2不支持OpenGL ES 3吗?

这里是我的GLSurfaceView构造我的渲染器设置:

public BasicGLSurfaceview(Context context) { 
    super(context); 
    setEGLContextClientVersion(2); 
    MyRenderer renderer = new MyRenderer(context); 
    setRenderer(renderer); 
    ... 

如果我通过3至setEGLContextClientVersion()而不是2,我的渲染线程被赋予了“失败的createContext:”例外。我也创建了自己的上下文工厂,并使用setEGLContextFactory(),但结果是相同的。询问大于2的版本会导致我的渲染线程发生异常。

+0

你试过NDK gles3jni样? https://android.googlesource.com/platform/development/+/master/ndk/platforms/android-18/samples/gles3jni/ –

+0

你可以在创建你的上下文的地方显示代码吗?如果你使用'GLSurfaceView',那么你可以在''GLSurfaceView'构造函数中设置你的'Renderer'。 –

+0

我试过了NDK gles3jni。它只是停止。 – mitchpb

三星Galaxy S4附带两种不同的CPU,具体取决于国家。具有Snapdragon CPU的GT-I9505版本支持Android 4.3或更高版本的OpenGL ES 3,但具有Exynos CPU的GT-I9500则不支持。

参见:Wikipedia Article 参见:SAMMOBILE Article