我正在用 OpenGL 和 GLFW 编写游戏引擎。但是,不知何故我的窗口无法关闭。我尝试了很多东西,但没有效果。我的代码有什么问题?
我找不到其中的错误 - 我觉得一切都很好。
代码:
int running;
GLFWwindow* window;
Window::~Window()
{
glfwTerminate();
}
Window::Window(int width, int height, const std::string& title)
: m_width(width),
m_height(height),
m_title(title){
glfwInit();
if (!glfwInit())
glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
window = glfwCreateWindow(height, width, __FILE__, NULL, NULL);
if (!window) {
glfwTerminate();
}
running = true;
}
void Window::MainLoop()
{
do
{
glfwMakeContextCurrent(window);
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
glfwPollEvents();
Draw();
glfwSwapBuffers(window);
}
while(running);
}
void Window::Draw()
{
glBegin(GL_TRIANGLES);
glVertex3f( 0.0f, 1.0f, 0.0f);
glVertex3f( 1.0f,-1.0f, 0.0f);
glVertex3f(-1.0f,-1.0f, 0.0f);
glEnd();
}
谢谢!
最佳答案
有几件事,但问题似乎是您从未设置 running = false
。
试着让你的 while 条件看起来像这样 while(!glfwWindowShouldClose(window));
此外,如果您希望能够通过按 escape 来关闭窗口,这应该可行:while(!glfwWindowShouldClose(window) && glfwGetKey(window_, GLFW_KEY_ESCAPE) != GLFW_PRESS);
/p>
还可以考虑让您的 int running
成为 bool
。
诸如 glfwMakeContextCurrent(window);
和 glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
之类的东西不需要在你的循环中如果您不打算更改它们。
有关 openGL 的更多信息以及获得一些基本理解和工作示例,请考虑阅读 https://learnopengl.com/ .
关于c++ - 窗口未关闭 GLFW,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43804024/