繁体   English   中英

在 C++ 中创建 GLFW OpenGL Window 时遇到问题

[英]Trouble Creating a GLFW OpenGL Window in C++

这是我正在处理的当前代码:

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;
    }

在运行时,未创建 window,我收到失败消息。 当我定义它时,我不明白为什么 window 是一个空指针。 我错过了什么吗? 谢谢您的帮助。

根据 GLFW 文档,如果请求的GLFW_OPENGL_ANY_PROFILE上下文版本小于 3.2(并且 GLFW 有一个与平台无关的 check.CreateWindow 内置glfwCreateWindow ,则GLFW_OPENGL_PROFILE window 提示值为

请参阅: 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 错误处理程序 function ,您会看到它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM