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