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