窗口不关闭GLFW
问题描述:
我在OpenGL和GLFW中编写游戏引擎。但是,不知怎的,我的窗户不能关闭。我尝试了很多东西,但没有效果。我的代码有什么问题?窗口不关闭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(!glfwWindowShouldClose(window));
此外,如果你希望能够通过按下Esc键这应该工作,关闭窗口:while(!glfwWindowShouldClose(window) && glfwGetKey(window_, GLFW_KEY_ESCAPE) != GLFW_PRESS);
还考虑让int running
一个bool
。
而诸如glfwMakeContextCurrent(window);
和glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
之类的东西如果不打算更改它们,则不需要放入循环中。
有关openGL的更多信息,并获得一些基本的理解和工作示例,请考虑阅读https://learnopengl.com/。
太好了,谢谢!它可能是不重要的,但是你是否也知道为什么当用标题替换__FILE__时,我得到''没有匹配函数调用glfwCreateWindow'? – user6632515
尝试'title.c_str()'。函数期望C类型字符串= char数组(const char *)。 – Aldarrion