[英]Android NDK C++ openGL ES 2 context gives bad display
我正在嘗試使用C ++中的NDK實現openGL ES 2.0游戲。 我的測試設備是ASUS Zenphone 5,我可以肯定它支持openGL ES 2.0,因為它可以非常流暢地運行來自Play商店的基於openGL ES 2的游戲,還可以運行androind NDK中的helloGl2示例。
當我調用glCreateShader
日志貓通過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)
但是,當我在銀河s3(GT-I9100)上進行測試時,沒有錯誤顯示錯誤,但是應用程序在使用致命信號SIGSEV調用glCreateShader時崩潰
這里發生了什么?
如果要創建ES 2上下文,則還需要在EGL配置的屬性中包括EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT
, EGL_CONTEXT_CLIENT_VERSION, 2
向上下文屬性添加EGL_CONTEXT_CLIENT_VERSION, 2
是不夠的。
另外,請確保您鏈接到libGLESv2.so( -lGLESv2
中的LOCAL_LDLIBS
),並確保您沒有偶然地鏈接到libGLESv1_CM.so。 (在相同的過程中使用它們都需要一些額外的技巧。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.