在Windows上使用ANGLE和GLFW设置C ++项目

问题描述 投票:2回答:1

我正在尝试使用ANGLE在Windows上建立基本的OpenGL ES 2.0应用程序。我已经通过vcpkg和ANGLE(通过用#7923#8785修补vcpkg或在本地构建)安装了GLFW,并且可以构建应用程序。我在输出目录中也有d3dcompiler_47.dll。不幸的是,在运行时,似乎没有OpenGL ES调用成功。

我正在如下初始化GLFW:

#include <iostream>

#define GLFW_INCLUDE_ES2
#include <GLFW/glfw3.h>

int main()
{
    if (!glfwInit())
    {
        std::cerr << "Could not init GLFW\n";
        return 1;
    }

    glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_ES_API);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
    glfwWindowHint(GLFW_SAMPLES, 4);
    glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE);

    auto window = glfwCreateWindow(640, 480, "Test GLES", nullptr, nullptr);
    if (!window)
    {
        std::cerr << "Could not create window\n";
        glfwTerminate();
        return 1;
    }

    glfwMakeContextCurrent(window);

    // rest of code goes here

调用glfwMakeContextCurrent之后,我希望OpenGL ES上下文可用。但是:

  • glGetString(GL_VERSION)glGetString(GL_RENDERER)glGetString(GL_VENDOR)的调用均返回空指针。
  • glCreateShader(GL_VERTEX_SHADER)的调用返回0(即失败),但是glGetError()给出GL_NO_ERROR

相同的代码在同一台计算机上的Linux上正常工作,所以我认为我需要做其他事情才能使事情在Windows上正常工作。

我的搜索没有提供一些有用的信息(但是确实建议进行glGetString检查)。我认为我所缺少的足够明显,没有人会费心把它放在解释中,所以当我知道出了什么问题时,我会感到很傻。

关于我在这里缺少什么的任何建议?

我正在尝试使用ANGLE在Windows上建立基本的OpenGL ES 2.0应用程序。我已经通过vcpkg和ANGLE安装了GLFW(通过使用#7923和#8785修补vcpkg或在本地构建)...

c++ visual-studio opengl-es glfw google-angle
1个回答
2
投票

按照指定,您应该请求OpenGL ES上下文:

© www.soinside.com 2019 - 2024. All rights reserved.