gpt4 book ai didi

c++ - 在xz平面opengl中绘制场景

转载 作者:行者123 更新时间:2023-11-28 02:36:03 25 4
gpt4 key购买 nike

我正在开发一个 opengl 程序。查看参数是:眼睛 0 -4 6查看 0 1 0看着 0 0 0

我想绘制一个背景矩形(带有纹理),这样我就可以从当前眼睛位置看到它。现在,眼睛正从 -ve Y 方向看。我希望能够绘制一个覆盖整个屏幕的矩形。我不明白要给矩形什么坐标以及如何获得纹理映射。目前我的方法中有这个:相同的代码是什么。我有这个功能:

glPushMatrix();
glLoadIdentity();
glBegin(GL_QUADS);
glColor3f(1.0f, 0.0f, 0.0f);
glVertex2f(-1.0, -1.0);
glVertex2f(-1.0, 1.0);
glVertex2f(1.0, 1.0);
glVertex2f(1.0, -1.0);
glEnd();
glPopMatrix();

最佳答案

绘制独立于相机的背景图像的最简单选择是在标准化设备坐标 (NDC) 中绘制它,并且不对其执行任何转换/投影。要覆盖整个屏幕,您必须绘制一个从 p = [-1, -1] 到 [1,1] 的四边形。然后可以通过 tex = (p + 1)/2

找到纹理坐标

标准化设备坐标是在应用投影和透视划分后通常会得到的坐标。它们跨越从 [-1,-1,-1] 到 [1,1,1] 的立方体,其中近平面映射到 z = -1(至少在 OpenGL 中,在 DirectX 中,近平面映射到 z= 0).在您的特殊情况下,深度应该无关紧要,只要您将背景平面绘制为每帧中的第一个元素并禁用深度测试即可。

关于c++ - 在xz平面opengl中绘制场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27392952/

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