我想在C++中使用NDK實現openGL ES 2.0遊戲。我的測試設備是華碩Zenphone 5 我很確定它支持openGL ES 2.0,因爲它可以非常流暢地運行基於OpenGL ES 2的遊戲,並且還可以非常流暢地運行遊戲中的helloGl2樣本。Android NDK C++ openGL ES 2上下文給出不好的顯示
當我打電話給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)
然而,當我測試的一個星系s3(GT-I9100)沒有BAD DISPLAY ERROR,但應用程序在致命信號SI調用glCreateShader時崩潰GSEV
這是怎麼回事?
你如何設置'display'的值?您可能還想顯示'config'選擇代碼。即使錯誤確實表明問題出在顯示器上。 –
是的,抱歉,我剛剛意識到我應該發佈顯示代碼,因爲最終的問題證明是在eglchooseconfig屬性(EGL_RENDERABLE_TYPE,EGL_OPENGL_ES2_BIT)中,無論如何感謝輸入 – Allahjane