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

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

在移动窗口之前:

c++ - 仅在移动窗口时,OpenGL或GLFW才能渲染确定-LMLPHP

移动窗口后:

c++ - 仅在移动窗口时,OpenGL或GLFW才能渲染确定-LMLPHP

这是代码:

#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;
}

最佳答案

自从1.5年前发布以来,这可能与该问题的最初问题无关,但是如果您在Mac OS X Mojave上遇到此问题,则GLFW GitHub上存在一个问题:https://github.com/glfw/glfw/issues/1334

您可以在此处检查临时解决方法。

关于c++ - 仅在移动窗口时,OpenGL或GLFW才能渲染确定,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43985162/

10-09 05:23