为什么 glewInit() 会给我一个段错误?

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

我正在使用 glew 和 glfw 开发一个 opengl 项目

项目较大,但只有初始化代码无法正常工作。我使用glew 2.2.0_1和glfw 3.3.8 (顺便说一句。我在调试器中运行了这个,所以我 100% 确定 glewInit() 导致了段错误。如果我将其放入一个文件中,而没有其余代码,它也会导致段错误)

代码是:

#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();
    // ...
}

这是库错误还是我做错了什么? (对于任何询问此代码的人来说,编译时不会出现任何警告或错误)

c++11 opengl segmentation-fault glfw glew
1个回答
0
投票

使用 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);
© www.soinside.com 2019 - 2024. All rights reserved.