我正在使用 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();
// ...
}
这是库错误还是我做错了什么? (对于任何询问此代码的人来说,编译时不会出现任何警告或错误)
使用 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);