gpt4 book ai didi

c++ - OpenGL 不会创建具有所需大小的窗口

转载 作者:搜寻专家 更新时间:2023-10-31 02:06:58 24 4
gpt4 key购买 nike

所以我有这段代码

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 上下文。调用glfwMakeContextCurrent使窗口上下文成为当前窗口,任何 OpenGL 指令之前:

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

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

glViewport(0, 0, 1024, 768);

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

关于c++ - OpenGL 不会创建具有所需大小的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49472285/

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