GLES 2 功能在 Visual Studio 中不起作用

GLES 2 Functions Not Working in Visual Studio

我正在使用 Visual Studio Community 2017,但此版本中的 native-activity 与 Visual Studio Community 2015 中的相同。

我刚刚在 Visual Studio 2017 年创建了一个新的原生 activity 项目,使用的是随此项目选择一起加载的默认程序。但是,每当我尝试使用专用于打开 gl es 2 的函数时,Visual Studio 会针对我使用的每个打开 gl es 2 函数以 "error : undefined reference to 'glCreateShader' " 之类的错误响应。奇怪的是,即使我删除了 pch 文件中包含 open gl es 1:

的行,以下代码仍然有效
glClearColor(200, 200, 200, 1);
glClear(GL_COLOR_BUFFER_BIT);

如果将以下函数放入默认本机 activity 项目(即使在包含 GLES2/gl2.h、GLES2/gl2ext.h 和 GLES2/gl2platform.h) 导致上述错误:

int prepareShader(GLuint shaderType, const char * shaderCode) {
GLuint shader = glCreateShader(shaderType);
int len = strlen(shaderCode);
glShaderSource(shader, 1, &shaderCode, &len);

}

我记得在 Android Studio 中发生了类似的错误,通过将以下内容添加到 cmakelists.txt 中修复了该错误:

find_library(gl-lib
         GLESv2 )

find_library(egl-lib
         EGL )

target_link_libraries( # Specifies the target library.
                   native-lib
                   ${egl-lib}
                   ${gl-lib})

但是,我的 Visual Studio 项目不使用 CMake。

有人可以告诉我如何在 Visual Studio 2017 中成功使用 open gl es 2 吗?

我的问题的解决方案是使用 eglGetProcAddress 加载 open gl 函数。这只是意味着每个 opengl es 函数在使用它们之前必须设置为一个指针,因为 GLES2/gl2.h 没有定义函数(函数是在 运行 时间定义的)。

对每个函数执行类似的操作即可解决问题。 (但是,我需要删除 GLES2/gl2.h 中的函数原型才能正常工作)。

typedef GLuint(GL_APIENTRYP PFNGLCREATESHADERPROC) (GLenum type);
PFNGLCREATESHADERPROC glCreateShader = (PFNGLCREATESHADERPROC)eglGetProcAddress("glCreateShader");