关于c ++:OpenGL无法创建所需大小的窗口

OpenGL doesn't create window with the desired size

所以我有这段代码

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

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

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

1
2
3
4
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使窗口上下文为当前状态:

1
2
3
4
5
GLFWwindow* window = glfwCreateWindow(1024, 768,"Hello Triangle", NULL, NULL);

glfwMakeContextCurrent(wnd); // <-- make the context current before glViewport

glViewport(0, 0, 1024, 768);

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