OpenGL 不会创建所需大小的窗口

OpenGL doesn't create window with the desired size

本文关键字:窗口 创建 OpenGL      更新时间:2023-10-16

所以我有这个代码

GLFWwindow* window = glfwCreateWindow(1024, 768, "Hello Triangle", NULL, NULL);
glViewport(0, 0, 1024, 768);

但是,当我创建一个坐标为 (-1, -1(、(0, 1( 和 (1,-1( 的三角形时,它只在拐角处画了一个小三角形。如果我调整窗口大小,它会绘制正确的三角形。

因此,我设置了一个帧缓冲区大小回调:

void FramebufferSizeCallback(GLFWwindow* window, int width, int height) {
    glViewport(0, 0, width, height);
    cout << width << " " << height << endl;
}

我尝试稍微调整窗口大小,结果发现窗口大小大于 1024 x 768。

那么,为什么 glfwCreateWindow 函数不创建大小为 1024 x 768 的窗口呢?还是我有错误的理解?

我正在使用macOS High Sierra。

glViewport的第一次调用将不起作用,因为此时没有当前的OpenGL上下文。在任何 OpenGL 指令之前调用 glfwMakeContextCurrent 以使窗口的上下文成为当前

GLFWwindow* window = glfwCreateWindow(1024, 768, "Hello Triangle", NULL, NULL);
glfwMakeContextCurrent(wnd); // <-- make the context current before glViewport
glViewport(0, 0, 1024, 768);

请注意,glfwCreateWindow创建一个窗口和一个关联的 OpenGL 上下文,但它不会更改当前上下文。