当前位置: 首页 > 知识库问答 >
问题:

glfwCreateWindow 在 Mac OS 上返回 NULL

茹高义
2023-03-14

我在Xcode10.0 Mac OS 10.14上用glew2.1和glfw3.2做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控制台将抛出一个错误:设置为窗口的第一响应者,但它在另一个窗口中((空))!当视图被释放时,这最终会崩溃。第一个响应程序将设置为 nil。

共有1个答案

茹康裕
2023-03-14

这两行:

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

给我带来了麻烦。一旦我删除了它们,glfwCreateWindow()就不再返回null。

 类似资料:
  • 我正在使用GLFW,只想打开一个空窗口。 我下载了适用于Windows 32的GLFW。创建了一个空控制台项目并编写了以下代码: 我认为我正确地添加了库和头文件。但是每次程序在glfwCreateWindow(..)函数,因为这个函数返回null。 有人能帮我吗?

  • 在对代码运行了几次测试之后,我已经确定GLFW和GLEW都已成功初始化,但是当我尝试创建一个对象以用于GLFW函数时,函数返回一个。为什么会这样,我该如何解决?这是我的代码:

  • 当我在Linux上调用时,它返回。相同的代码适用于Windows,并且我安装了适当的图形驱动程序。如何确定它返回 null 的原因? 编辑:结果它返回了null,因为我要求的OpenGL版本显然在我的上网本上不可用。这解决了我的问题,但没有真正回答我的问题。

  • 问题内容: 所以我有这段代码,我只想在另一个目录中列出保存的列表,其中php scrip在xampp文件夹中,并且保存到此路径: 我不知道为什么我不能让它继续工作,似乎输出为空,我真的混淆了它应该工作,或者我只是错了我需要一些帮助。 问题答案: 添加到shell命令的末尾以返回。 另外,如果运行PHP的用户没有足够的权限来查看中的输出,则上述代码将返回错误消息。

  • 为了学习平均堆栈(使用Mongoose),我创建了一个StackOverflow类型的应用程序。我有存储在Mongo(v3.0.7)中的问题,它们有答案子文档。 我试图增加一个答案的投票数,但当问题返回时,它是空的。我非常肯定查询有问题,特别是我试图用需要修改的ID得到答案的地方。 查询0票有效: 更新:通过Mongo查询,返回结果: 但是,通过Mongoose返回NULL:

  • 我的情况:我有一个扩展JFrame的类MainScreen(它实际上只是一个带有启动应用程序的main方法的JFrame),我在这个类上添加了一个扩展JLayeredPane的类GameManager,我用它来显示一些东西。 现在,我要做的是,从GameManager类中,我要向主JFrame添加一个JButton。我以为这会很容易,只要做: 但是getParent()返回的是null,所以很明显