C++ I';由于某种原因,我无法创建GLFW上下文

C++ I';由于某种原因,我无法创建GLFW上下文,c++,glfw,glew,C++,Glfw,Glew,我目前正在使用GLFW和GLEW(以前很高兴)编写一个3D引擎。但是当调用glfwMakeContextCurrent时,它失败了。这是我第一次遇到这个错误,因为我不需要调用init函数 我寻找可能的解决办法,但似乎没有一个适合我。但是,当我尝试使用教程中的代码时,非常接近我的代码-非常接近我的代码教程,一切都如期进行 因此,我的问题是: 如何以某种方式修复GLFW问题 Main.cpp: #包括 #包括“Engine3.h” void UserCreate(){} void UserUpdat

我目前正在使用GLFW和GLEW(以前很高兴)编写一个3D引擎。但是当调用glfwMakeContextCurrent时,它失败了。这是我第一次遇到这个错误,因为我不需要调用init函数

我寻找可能的解决办法,但似乎没有一个适合我。但是,当我尝试使用教程中的代码时,非常接近我的代码-非常接近我的代码教程,一切都如期进行

因此,我的问题是: 如何以某种方式修复GLFW问题

Main.cpp:

#包括
#包括“Engine3.h”
void UserCreate(){}
void UserUpdate(float ElapsedTime){}
静态void UserCursorEvent(GLFWwindow*窗口,双XPO,双YPO){}
静态无效UserMouseButtonEvent(GLFWwindow*窗口,int按钮,int操作,int mods){}
静态无效UserKeyEvent(GLFWwindow*window,int-key,int-scancode,int-action,int-mods){}
内部主(空){
发动机e;
e、 AppTitle=“游戏”;
如果(e.Init(800600,引擎3_加窗))
{
e、 UserCreationCallback=&UserCreate;
e、 UserUpdateCallback=&UserUpdate;
e、 SetKeyCallback(&UserKeyEvent);
e、 SetCursorCallback(&UserCursorEvent);
e、 SetMouseCallback(&UserMouseButtonEvent);
e、 Begin();
}
系统(“暂停”);
返回0;
}
引擎3.h:

#pragma一次
#包括
#定义GLEW_静态
#包括
#包括
#定义引擎3\u窗口化的0
#定义引擎3\u全屏1

#在分配日志(msg)std::cout之前,定义您正在使用的
ENGINE::Window
;所以它是
NULL
。这就是
glfwMakeContextCurrent
函数失败的原因

使用:

而不是:

glfwMakeContextCurrent(ENGINE::Window);
glfwMakeContextCurrent(引擎::窗口)//激活窗口
引擎::窗口=窗口//保存窗口供以后使用

ENGINE::Window
仍然是一个null ptr,因此您只需将null ptr传递给glfwContext创建。更改顺序,或使用
glfwMakeContextCurrent(窗口);//您收到的错误消息的局部变量

是由您自己的代码生成的,因此很难判断发生了什么,除非您从GLFW库读取并输出底层错误代码或消息。我不熟悉该库,但可以在API文档中搜索一个函数,该函数提供了最新的错误代码或错误消息。还可以查看以下文档页面:不确定,但只有在将非空值传递给
glfwMakeContextCurrent
之后,才会立即将其分配给
ENGINE::Window
。在这些情况下(您会发现一段类似的代码工作),从这一点开始,逐渐将其更改为您的程序,以便发现它何时中断。这可以帮助您更准确地定位错误
glfwMakeContextCurrent(ENGINE::Window);