Android NDK-OpenGL ES 2.0-库链接
使用NDK编写OpenGLES2.0程序。我面临一个名为未实现OpenGL ES API的错误Android NDK-OpenGL ES 2.0-库链接,android,opengl-es,android-ndk,opengl-es-2.0,Android,Opengl Es,Android Ndk,Opengl Es 2.0,使用NDK编写OpenGLES2.0程序。我面临一个名为未实现OpenGL ES API的错误 我的程序没有任何OpenGL ES 1.x调用。emulator GPU支持也已启用。makefile如下所示 /*Android.mk*/ LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := NDKTestApp LOCAL_SRC_FILES := firstTriangle.cpp LOCAL_LDLI
我的程序没有任何OpenGL ES 1.x调用。emulator GPU支持也已启用。makefile如下所示
/*Android.mk*/
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := NDKTestApp
LOCAL_SRC_FILES := firstTriangle.cpp
LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv2
LOCAL_STATIC_LIBRARIES := android_native_app_glue
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue)
我没有在任何地方链接1.x版本库,但在日志中仍然可以看到
loaded .../libGLESv1_CM_emulation.so
loaded .../libGLESv2_emulation.so
所以我认为问题是函数在版本1库中被搜索,它不会在那里很明显地找到,错误也是如此
那么,我如何停止针对版本1库的链接,比如强制避免加载它
上下文是使用
const EGLint context_attribs[] = {
EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE
};
.
.
.
context = eglCreateContext(display, config, NULL, context_attribs);
什么电话失败了?看起来您正在使用模拟器;你在真正的设备上试过吗?是否在模拟器中启用了GPU加速?glCreateShader()、glShaderSource()、glGetShaderiv()
和所有类似的2.0调用都失败。也在真实设备上试用过,它会出现黑屏。是的,GPU加速在emulator中启用,我的GPU是Radeon 6770M,它支持OpenGL 4.1,所以它支持着色器,所以它必须支持ES2.0。顺便问一下,这些库位于哪里(.so文件),因为您看到,问题是版本1库正在加载,所以调用被跟踪到那里(后期绑定指向那里)所以,如果我以某种方式强制版本1库不加载,问题就会得到解决。。(世界上最可怕的事情是删除版本1。所以,它在PC上的什么地方,找不到它…)两个库都可以加载。调用将根据EGL上下文的配置方式进行路由。您可以演示如何配置EGL吗?特别是,在调用eglCreateContext
时,应将EGL\u CONTEXT\u CLIENT\u版本设置为2。