glfwCreateWindow在Mac OS上返回NULL

时间:2018-10-25 11:39:03

标签: opengl glfw glew

我正在使用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。

1 个答案:

答案 0 :(得分:1)

这两行:

glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

是我的问题所在。删除它们后,glfwCreateWindow()不再返回null。