c++ - 窗口未关闭 GLFW

标签 c++ opengl window glfw

我正在用 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/

相关文章:

C++ 遍历多维数组

c++ - DLL中的CreateThread提前终止

opengl - 是否可以将默认渲染缓冲区附加到 FBO?

flash - 如何设置 Flash 对象在新窗口中打开 URL?

javascript - 将脚本插入 iFrame 的页眉,而不清除 iFrame 的主体

c++ - 为什么我们需要为每个类函数定义指定类型模板参数?

c++ - std::ofstream 变量定义问题

c++ - 如何在 XCode 中使用 glew

c - OpenGL 三角形未显示

javascript - 父窗口重新加载后如何获取所有打开的子窗口的引用