Android NDK C++ openGL ES 2 上下文提供糟糕的显示
Android NDK C++ openGL ES 2 context gives bad display
我正在尝试在C++中使用NDK实现openGL ES 2.0游戏。我的测试设备是华硕Zenphone 5我很确定它支持openGL ES 2.0,因为它可以非常流畅地运行基于Play商店的openGL ES 2的游戏,以及androind NDK中的helloGl2示例。
当我调用日志猫时glCreateShader
谷歌搜索给出了一个错误"调用未实现的 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)上测试它时,没有显示错误,但是该应用程序在调用带有致命信号SIGSEV的glCreateShader时崩溃
这是怎么回事?
如果要创建 ES 2 上下文,则还需要在 EGL 配置的属性中包含EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT
,仅向上下文属性添加EGL_CONTEXT_CLIENT_VERSION, 2
是不够的。
另外,请确保您链接到 libGLESv2.so(-lGLESv2
LOCAL_LDLIBS
),并确保不会意外链接到 libGLESv1_CM.so 中。(在同一过程中使用它们需要一些额外的技巧。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- #为""定义宏;静态";针对不同的上下文
- 字符串-C++后显示的随机字符
- 继承期间显示未知行为的子类
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- 与互斥锁相比,旋转锁可以保证上下文切换
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- 程序崩溃并显示"std::out_of_range"错误
- 为什么我不能使用 EGL 创建无头 OpenGl 上下文?
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 为什么在C的循环中使用printf的Rust代码不显示输出,而在C++的循环中显示std::cout
- 如何使用IExecuteCommand和动词在上下文菜单外壳扩展中显示本地化文本和自定义图标?
- 启动时不显示 Direct2D DC 上下文呈现的图像
- 用于在许多Qopenglwidget中显示的FBO渲染的全局OpenGL上下文
- 如何更新C 中已使用TrackPopupMenu显示的上下文菜单
- Android NDK C++ openGL ES 2 上下文提供糟糕的显示
- 如何显示 Windows 资源管理器上下文(右键单击)菜单
- 显示 QT 上下文菜单时没有键发布事件
- 上下文菜单不显示