在 xz 平面 opengl 中绘制场景

Drawing a scene in xz plane opengl

本文关键字:绘制 opengl xz 平面      更新时间:2023-10-16

我正在开发一个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)。在您的特殊情况下,深度应该无关紧要,只要您将背景平面绘制为每帧中的第一个元素并禁用深度测试即可。