【问题标题】:Window not closing GLFW窗口未关闭 GLFW
【发布时间】:2017-05-05 11:39:04
【问题描述】:

我正在用 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();
}

谢谢!

【问题讨论】:

    标签: c++ opengl window glfw


    【解决方案1】:

    有几件事,但问题似乎是您从未设置过running = false

    试着让你的 while 条件看起来像这样while(!glfwWindowShouldClose(window));

    此外,如果您希望能够通过按转义键关闭窗口,这应该可以: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 的匹配函数调用”吗?
    • 试试title.c_str()。该函数需要 C 类型字符串 = char 数组 (const char*)。
    猜你喜欢
    • 1970-01-01
    • 2022-09-25
    • 2014-10-19
    • 2019-10-07
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多