创建GLFW窗口失败?

mii*_*inu 4 c++ opengl macos glfw glm-math

我尝试用最简单的代码创建一个窗口:

#include <stdio.h>
#include <stdlib.h>

#include <GL/glew.h> // Always include it before glfw.h
#include <GLFW/glfw3.h>
#include <glm/glm.hpp>

int main(void) {
    glfwInit();
    glfwWindowHint(GLFW_VERSION_MAJOR, 3); // OpenGL 3.3
    glfwWindowHint(GLFW_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GLFW_TRUE); // Mac

    GLFWwindow* window = glfwCreateWindow(720, 480, "OpenGL", NULL, NULL); // Create a window

    if (window == NULL) {
        fprintf(stderr, "Failed to create window\n");
        glfwTerminate();
        return -1;
    }

    glfwMakeContextCurrent(window);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是我的 Makefile:

game:
    g++ src/main.cpp -std=c++17 -o play -I include -L lib -l glfw.3 -l GLEW.2.2
Run Code Online (Sandbox Code Playgroud)

当我编译代码时没有错误,但是当我尝试播放代码时出现此错误:

game:
    g++ src/main.cpp -std=c++17 -o play -I include -L lib -l glfw.3 -l GLEW.2.2
Run Code Online (Sandbox Code Playgroud)

有人能帮我吗?我不知道为什么我的窗口不想被创建......

gen*_*ult 7

GLFW_VERSION_MAJOR&GLFW_VERSION_MINOR不是 的有效参数glfwWindowHint

glfwWindowHint(GLFW_VERSION_MAJOR, 3); // OpenGL 3.3
               ^^^^^^^^^^^^^^^^^^ nope
glfwWindowHint(GLFW_VERSION_MINOR, 3);
               ^^^^^^^^^^^^^^^^^^ also nope
Run Code Online (Sandbox Code Playgroud)

使用GLFW_CONTEXT_VERSION_MAJOR&GLFW_CONTEXT_VERSION_MINOR代替。

根据文档,我的重点是:

GLFW_CONTEXT_VERSION_MAJORGLFW_CONTEXT_VERSION_MINOR指定创建的上下文必须兼容的客户端API版本。这些提示的确切行为取决于请求的客户端 API。

注意:请勿将这些提示与GLFW_VERSION_MAJOR和混淆GLFW_VERSION_MINOR,它们提供 GLFW 标头的 API 版本。

  • 多谢,伙计 !现在工作正常了...我很愚蠢抱歉。 (2认同)