gpt4 book ai didi

c++ - OpenGL 屏幕布局

转载 作者:太空宇宙 更新时间:2023-11-04 11:53:13 26 4
gpt4 key购买 nike

我对屏幕设置有一些疑问。最初,当我画一个三角形时,x vector 1 会一直向右,-1 会一直向左。现在我已经调整它以适应窗口的不同纵横比。我的新问题是如何使用于渲染 2d tri 的数字与像素值一致。如果我的窗口是 480 像素宽和 320 像素高,我想必须输入这个以用 tri 跨越屏幕

glBegin(GL_TRIANGLES);
glVertex2f(240, 320);
glVertex2f(480, 0);
glVertex2f(0, 0);
glEnd();

但它现在看起来像这样

glBegin(GL_TRIANGLES);
glVertex2f(0, 1);
glVertex2f(1, -1);
glVertex2f(-1, -1);
glEnd();

有什么想法吗?

最佳答案

您需要使用函数 glViewportglOrtho具有正确的值。基本上 glViewport 设置您的窗口的一部分能够使用 OpenGL 呈现 3D 图形。 glOrtho 使用 OpenGL 的坐标在窗口的该部分内建立坐标系。因此,对于您的任务,您需要知道窗口的确切宽度和高度。如果你说他们分别是 480 和 320 那么你需要打电话

glViewport(0, 0, 480, 320)
// or: glViewport ( 0,0,w,h)

某处,可能在您的 SizeChanging 处理程序中(如果您使用的是 WINAPI,则为 WM_SIZE 消息)

接下来,在建立OpenGL的场景时需要指定OpenGL的坐标。对于正交投影,它们将与窗口的尺寸相同,所以

glOrtho(-240, 240, -160, 160, -100, 100)
// or: glOrtho ( -w/2, w/2, -h/2, h/2, -100, 100 );

适合您的目的。并不是说这里我使用的深度是 200(z 从 -100 到 100)。接下来在您的渲染例程中,您可以绘制三角形

关于c++ - OpenGL 屏幕布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17248131/

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