在C++中创建GLFW OpenGL窗口时出现问题

edqdpe6u  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(198)

下面是我目前正在编写的代码:

int main() {

    glfwInit();

    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
    glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);

    GLFWwindow *window = glfwCreateWindow(WIDTH, HEIGHT, "OpenGL", NULL, NULL);

    if (nullptr == window) {
        std::cout << "Failed to create GLFW Window" << std::endl;
        glfwTerminate();

        return EXIT_FAILURE;
    }

在运行时,窗口没有被创建,并且我得到了失败消息。我不明白为什么当我定义它的时候,窗口是一个nullptr。我遗漏了什么吗?

zfciruhq

zfciruhq1#

根据GLFW文档,如果请求的OpenGL上下文版本低于3.2,则GLFW_OPENGL_PROFILE窗口提示的值 * 必须 * 为GLFW_OPENGL_ANY_PROFILE(并且每当调用glfwCreateWindow时,GLFW都内置了与平台无关的检查)。
请访问:https://www.glfw.org/docs/3.3/window_guide.html#GLFW_OPENGL_PROFILE_hint

GLFW_OPENGL_PROFILE指定要为其创建上下文的OpenGL配置文件。可能的值为GLFW_OPENGL_CORE_PROFILE或GLFW_OPENGL_COMPAT_PROFILE之一,或GLFW_OPENGL_ANY_PROFILE(不请求特定配置文件)。如果请求低于3.2的OpenGL版本,则必须使用GLFW_OPENGL_ANY_PROFILE。如果请求OpenGL ES,则忽略此提示。

特别是以下部分:如果请求低于3.2的OpenGL版本,则必须使用GLFW_OPENGL_ANY_PROFILE。
在你的例子中,你会得到一个GLFW错误。特别是这个错误--不管是什么平台/操作系统,如果你通过glfwSetErrorCallback()设置了一个GLFW错误处理函数,你会看到这个错误。

相关问题