glfwCreateWindow返回NULL

时间:2016-03-12 11:40:40

标签: c++ opengl glfw

我一直在Visual Studio 2015中使用C ++开发一个小型的openGL项目。我正在使用GLFW和GLEW。

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

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

我认为这是因为我的驱动程序,但我更新了我的集成显卡(Intel HD 4000)和我的高性能Nvidia GPU的驱动程序。

使用 openGL扩展查看器,我看到集成卡支持OpenGL 4.0和Nvidia GPU支持4.4。

这个项目相当大,所以只是为了消除问题我创建了一个基于GLFW和GLEW的简单创建三角形代码,但我仍然从glfwWindowCreate()得到错误。

我已经google了,除了更新驱动程序之外,我找不到其他解决方案。什么可能导致这种失败?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

你是否正确地启动了glfw?

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

然后一切都会好起来的。

答案 2 :(得分:0)

我遇到了同样的问题,其中glfwInit()成功,但是glfwCreateWindow返回NULL。但是我给错误的主要版本而不是MINOR版本的错误,如下所示。

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

代替

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

确保正确提供了版本号。