Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
glfwCreateWindow返回NULL 我在Visual Studio 2015中使用C++进行了一个小型OpenGL项目。我正在使用GLFW和GLEW_C++_Opengl_Glfw - Fatal编程技术网

glfwCreateWindow返回NULL 我在Visual Studio 2015中使用C++进行了一个小型OpenGL项目。我正在使用GLFW和GLEW

glfwCreateWindow返回NULL 我在Visual Studio 2015中使用C++进行了一个小型OpenGL项目。我正在使用GLFW和GLEW,c++,opengl,glfw,C++,Opengl,Glfw,在遇到一些硬件问题(硬盘)后,我在笔记本电脑上重新安装了windows。现在我尝试继续我的项目,该项目以前运行/调试没有问题,但现在我得到了一个错误 glfwCreateWindow()返回NULL(即使没有任何GLFWWindowHits),glewInit()也会失败 我以为这是因为我的驱动程序,但我已经更新了集成显卡(英特尔HD 4000)和高性能Nvidia GPU的驱动程序 使用OpenGL扩展查看器,我看到集成卡支持OpenGL 4和英伟达GPU支持4.4。 这个项目相当大,所以为了

在遇到一些硬件问题(硬盘)后,我在笔记本电脑上重新安装了windows。现在我尝试继续我的项目,该项目以前运行/调试没有问题,但现在我得到了一个错误

glfwCreateWindow()返回NULL(即使没有任何GLFWWindowHits),glewInit()也会失败

我以为这是因为我的驱动程序,但我已经更新了集成显卡(英特尔HD 4000)和高性能Nvidia GPU的驱动程序

使用OpenGL扩展查看器,我看到集成卡支持OpenGL 4和英伟达GPU支持4.4。 这个项目相当大,所以为了消除这个问题,我基于GLFW和GLEW创建了一个简单的create a triangle代码,但glfwWindowCreate()仍然出错


我在谷歌上搜索过,除了更新驱动程序,我找不到其他解决方案。什么会导致此故障?

您是否正确初始化glfw

if(!glfwInit()){
    return -1;
}

然后一切都会好起来。

你正确初始化glfw了吗

if(!glfwInit()){
    return -1;
}
然后一切都会好起来。

只是发布我的解决方案; 我犯了一个愚蠢的错误,我把我的.dll文件放在了另一个文件夹中(带有exe文件)。如果我没有在项目设置中指定任何其他内容,它们应该在项目文件夹中

我没有注意到的原因是,如果我完全删除了dll文件,我会收到一条dll错误消息,但是通过将文件保存在.exe文件夹中,我就无法启动GLFW或glew。

只是发布我的解决方案; 我犯了一个愚蠢的错误,我把我的.dll文件放在了另一个文件夹中(带有exe文件)。如果我没有在项目设置中指定任何其他内容,它们应该在项目文件夹中


我没有注意到的原因是,如果我完全删除了dll文件,我会收到一条dll错误消息,但是通过将文件保存在.exe文件夹中,我就无法启动GLFW或glew。

我遇到了同样的问题,
glfwInit()
成功,但
glfwCreateWindow
返回空值。但我犯了一个错误,给了0表示主要版本,而不是下面这样的次要版本

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 0);
反而

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);

确保您正确地给出了版本号。

我遇到了同样的问题,
glfwInit()
成功,但
glfwCreateWindow
返回NULL。但我犯了一个错误,给了0表示主要版本,而不是下面这样的次要版本

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 0);
反而

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);

请确保您正确提供了版本号。

“我已经更新了集成图形卡(英特尔HD 4000)和高性能Nvidia GPU的驱动程序。”很可能您在旧安装中曾做过一些事情,使您的计算机在程序中使用Nvidia的GPU。你需要找出那是什么,然后再做一次。出于某种原因,我的NVIDIA控制面板不允许我将我的NVIDIA GPU分配给Visual Studio(选项变灰),而对于其他程序,我可以选择。无论如何,图形处理器都应该能够处理OpenGL 4 + i,也设法将英伟达处理器分配给编译的EXE文件,但是它没有改变任何东西。设置错误回调并看它告诉你什么。我发现了我的错误。我写了:if(!glfwInit)而不是:if(!glfwInit())“我更新了集成显卡(Intel HD 4000)和高性能Nvidia GPU的驱动程序。”很有可能,在旧安装中,您曾做过一些事情,使您的计算机在程序中使用Nvidia的GPU。你需要找出那是什么,然后再做一次。出于某种原因,我的NVIDIA控制面板不允许我将我的NVIDIA GPU分配给Visual Studio(选项变灰),而对于其他程序,我可以选择。无论如何,图形处理器都应该能够处理OpenGL 4 + i,也设法将英伟达处理器分配给编译的EXE文件,但是它没有改变任何东西。设置错误回调并看它告诉你什么。我发现了我的错误。我写了:if(!glfwInit)而不是:if(!glfwInit())我运行这个,它通过:if(!glfwInit()){fprintf(stderr,“未能初始化GLFW\n”);}我运行这个,它通过:if(!glfwInit()){fprintf(stderr,“未能初始化GLFW\n”);}