2

我是 Android 开发的新手,所以我可能会遗漏一些东西。我的理解是,运行 Android 4.4.2 的三星 Galaxy S4 应该支持 OpenGL ES 3。但是,当我调用时glGetString(GL_VERSION)(在获得 OpenGL ES 2.0 上下文后) ,如果支持的话,OpenGL ES 2.0 build 1.10@235947.我希望得到一个OpenGL ES 3.0字符串。

如果我尝试强制获取 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 failed:”异常。我还创建了自己的上下文工厂并使用了 setEGLContextFactory(),但结果是一样的。要求大于 2 的版本会导致我的渲染线程出现异常。

4

1 回答 1

1

三星 Galaxy S4 配备两种不同的 CPU,具体取决于国家/地区。搭载骁龙 CPU 的 GT-I9505 版本支持 Android 4.3 或更高版本下的 OpenGL ES 3,但搭载 Exynos CPU 的 GT-I9500 不支持。

参见:维基百科文章 参见:SAMMOBILE 文章

于 2015-04-15T08:55:32.920 回答