我一直在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搜索,除了更新驱动程序,我找不到其他解决方案。什么可能导致这种失败?
你正确地启动了glfw吗?
if(!glfwInit()){
return -1;
}
那一切都应该没问题。
刚发布我的解决方案;我犯了一个愚蠢的错误,我将.dll文件放在不同的文件夹中(使用exe文件)。它们应该在项目文件夹中,如果我没有在项目设置中指定任何其他内容我猜。
我没注意到的原因是,如果我完全删除了dll文件,我收到了一条dll错误消息,但是通过保留在.exe文件夹中,我无法启动GLFW或glew。
我遇到了glfwInit()
成功但glfwCreateWindow
返回NULL的问题。但是我为MAJOR版本提供了0而不是像下面的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);
确保您已正确提供版本号。