我正在使用glew2.1和glfw3.2在Xcode10.0 Mac OS 10.14上完成OpenGL作业,但是glfwCreateWindow始终返回NULL。这是代码:
#include <stdio.h>
#include <stdlib.h>
#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <iostream>
int main(int argc, const char * argv[]) {
GLFWwindow* win;
if(!glfwInit()){
return -1;
}
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
win = glfwCreateWindow(640, 480, "test", NULL, NULL);
if(!win)
{
glfwTerminate();
exit(EXIT_FAILURE);
}
if(!glewInit())
{
return -1;
}
glfwMakeContextCurrent(win);
while(!glfwWindowShouldClose(win)){
glfwSwapBuffers(win);
glfwPollEvents();
}
glfwTerminate();
exit(EXIT_SUCCESS);
return 0;
}
如果我删除4个glfwWindowHint句子,则将显示一个窗口,但它是黑暗的,并且Xcode控制台将引发错误:设置为window的第一响应者,但它在另一个窗口中((null))!释放视图后,这最终将崩溃。第一个响应者将设置为nil。
答案 0 :(得分:1)
这两行:
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
是我的问题所在。删除它们后,glfwCreateWindow()不再返回null。