Opengl es GLFW无法加载所有GL ES 2.0功能

Opengl es GLFW无法加载所有GL ES 2.0功能,opengl-es,glfw,egl,Opengl Es,Glfw,Egl,我正在尝试设置GLFW来创建窗口和OpenGLES2.0上下文,因为我需要一些现成的东西来管理输入回调等。 问题在于,如果使用以下设置: glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_ES_API); glfwWindowHint(GLFW_CONTEXT_CREATION_API, GLFW_NATIVE_CONTEXT_API); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2);

我正在尝试设置GLFW来创建窗口和OpenGLES2.0上下文,因为我需要一些现成的东西来管理输入回调等。 问题在于,如果使用以下设置:

    glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_ES_API);
    glfwWindowHint(GLFW_CONTEXT_CREATION_API, GLFW_NATIVE_CONTEXT_API);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);

    glfwindow  = glfwCreateWindow(width, height, "Window Title", NULL, NULL);
    if (!glfwindow)
    {
        glfwTerminate();
        exit(1);
    }

    glfwMakeContextCurrent(glfwindow);
使用GLFW_NATIVE_CONTEXT_API进行GLFW_CONTEXT_CREATION_API提示,可以提供有关供应商的以下信息:

GL版本:OpenGL ES 3.2 NVIDIA 368.69 GL供应商:NVIDIA Corporation GL 渲染器:GeForce GTX 960M/PCIe/SSE2 GLSL版本:OpenGL ES GLSL ES 3.20

然后它甚至无法创建着色器(glCreateShader())返回0

但是如果我使用GLFW_EGL_CONTEXT_API来代替提示标志,我会设法完成大多数GL例程,如着色器加载、程序编译和链接、GL VBO设置等。但随后我在GLDrainElements()上失败

如果我使用此设置打印供应商信息,我可以看到:

总账版本:4.5.0 NVIDIA 368.69总账供应商:NVIDIA Corporation GL 渲染器:GeForce GTX 960M/PCIe/SSE2 GLSL版本:4.50 NVIDIA

所以,当EGL应该被支持作为上下文创建的底层API时,我得到了桌面OpenGL集,这对我来说是非常奇怪的

另外,如果我尝试手动检索glpaurements的函数指针,它将返回null

PFNGLDRAWELEMENTSPROC func = reinterpret_cast<PFNGLDRAWELEMENTSPROC>
(eglGetProcAddress("glDrawElements"));
pfngldrawlelementsproc func=reinterpret\u cast
(eglGetProcAddress(“GLDrawerElements”);

我想了解问题是什么,以及如何以正确的方式使用GLFW创建GL ES上下文。

因为没有人回答我自己的问题,而且因为我很久以前就找到了问题的根源,下面是解释:

GLFW对于GLES上下文初始化工作正常。问题在于链接的库。在Windows上模拟GLES时,不能链接opengl32.lib。在我的情况下,我使用PowerVR SDK及其ES2和ES3 lib。因此,以下lib是必需的:

glfw3.lib

libEGL.lib

libGLESv2.lib


在我的链接器中,因为默认情况下我使用的是桌面OpenGL,所以我也使用opengl32.lib进行链接,它可能比其他GL lib更优先。在桌面平台上运行GLE时,请确保将其排除在外。

您在什么平台上遇到此问题?我想我已经解决了。我在egl和GLE lib之前链接了opengl32.lib。我删除了它并开始工作。需要从各种花哨的论坛上少读一些。