gpt4 book ai didi

c++ - OpenGL 或 GLFW 仅在移动窗口时渲染正常

转载 作者:可可西里 更新时间:2023-11-01 18:38:56 26 4
gpt4 key购买 nike

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

我在 macOS 系统上运行代码,它是使用 Xcode 构建的。

移动窗口前:

Before moving the window

移动窗口后:

After moving the window

这是代码:

#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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com