opengl 为什么glewInit()给予我一个segfault?

kmbjn2e3  于 2023-01-13  发布在  其他
关注(0)|答案(1)|浏览(133)

我正在用glew和glfw与opengl合作一个项目
项目更大,但只有初始化代码不能正常工作。我使用的是glew 2.2.0_1和glfw 3.3.8(顺便说一句,我在调试器中运行了这个,所以我100%肯定是glewInit()导致了segfault。如果我把它放在一个没有其余代码的文件中,它也会导致segfault)
代码为:

#include <GL/glew.h>
#include <GLFW/glfw3.h>

const int WIDTH = 640;
const int HEIGHT = 480;
int main(int argc, char **argv) {
    // Set up GLFW and create window
    glfwInit();
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

    GLFWwindow* window = glfwCreateWindow(WIDTH, HEIGHT, "Spinning Cube", nullptr, nullptr);
    glfwMakeContextCurrent(window);
    if (!window) {
        return 1;
    }
    // Set up GLEW
    glewInit();
    // ...
}

这是一个库错误还是我做错了什么?(对于任何人问这个代码编译没有任何警告或错误)

vwkv1x7d

vwkv1x7d1#

在macOS上,您必须创建设置了向前兼容性标志的OpenGL Core Profile上下文:

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GLFW_TRUE);

相关问题