只有在移动窗口时,OpenGL或GLFW才能呈现

Jai*_*mc2 7 c++ opengl macos glfw

我只是想在屏幕的左下角和右上角之间画一条线.结果非常烦人,因为它渲染了一条从屏幕左下角到中间点的线......但是如果我用鼠标移动窗口位置,它会突然改变并正确呈现!发生了什么,我该如何解决这个问题?

我在macOS系统上运行代码,并且正在使用Xcode进行构建.

在移动窗口之前:

在移动窗口之前

移动窗口后:

移动窗口后

这是代码:

#include <GLFW/glfw3.h>

#define SCREEN_W 640
#define SCREEN_H 480

int main(int argc, char * argv[]) {

    glfwInit();

    GLFWwindow* window = glfwCreateWindow(SCREEN_W, SCREEN_H, "GLFW Window", NULL, NULL);

    glfwMakeContextCurrent(window);

    float lineVertices[] = {
        0, 0, 0,
        SCREEN_W, SCREEN_H, 0
    };

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glViewport(0.0f, 0.0f, SCREEN_W, SCREEN_H);
    glOrtho(0, SCREEN_W, 0, SCREEN_H, 0, 1);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

    while (!glfwWindowShouldClose(window)) {
        glClear(GL_COLOR_BUFFER_BIT);

        glEnableClientState(GL_VERTEX_ARRAY);
        glVertexPointer(3, GL_FLOAT, 0, lineVertices);
        glDrawArrays(GL_LINES, 0, 2);
        glDisableClientState(GL_VERTEX_ARRAY);

        glfwSwapBuffers(window);

        glfwPollEvents();
    }

    glfwDestroyWindow(window);

    glfwTerminate();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

GPr*_*ost 2

可能这与这个问题的最初问题无关,因为它是 1.5 年前发布的,但如果你在 Mac OS X Mojave 上遇到这个问题,那么 GLFW GitHub 上会出现一个问题: https: //github.com/glfw/glfw /问题/1334

您可以在那里检查临时解决方法。