【发布时间】:2014-12-26 20:14:50
【问题描述】:
我正在尝试在 C++ 中使用 NDK 实现 openGL ES 2.0 游戏。我的测试设备是华硕 Zenphone 5 我很确定它支持 openGL ES 2.0,因为它可以非常流畅地从 Play Store 运行基于 openGL ES 2 的游戏,以及 android NDK 中的 helloGl2 示例。
当我打电话给glCreateShader log cat 时,我通过谷歌搜索了一下给出了一个错误“称为未实现的 api”,我发现这是因为该应用默认使用的是 openGL ES 1 上下文。
所以我修改了 EGL 上下文创建代码:
context = eglCreateContext(display, config, NULL, NULL);
到
EGLint contextAttrs[] = {
EGL_CONTEXT_CLIENT_VERSION,2,EGL_NONE
};
context = eglCreateContext(display, config, NULL, contextAttrs);
现在这给出了一个不同的错误
E/libEGL(12670): validate_display:257 error 3008 (EGL_BAD_DISPLAY)
但是,当我在 Galaxy s3 (GT-I9100) 上对其进行测试时,没有出现 BAD DISPLAY ERROR ,但应用程序在使用致命信号 SIGSEV 调用 glCreateShader 时崩溃
这是怎么回事?
【问题讨论】:
-
你是如何设置
display的值的?您可能还想显示config选择代码。即使该错误确实表明问题出在显示器上。 -
是的,对不起,我刚刚意识到我也应该发布显示代码,因为最终问题出在 eglchooseconfig 属性(EGL_RENDERABLE_TYPE、EGL_OPENGL_ES2_BIT)中,无论如何感谢您的输入
标签: android c++ opengl-es android-ndk