在xz平面opengl中绘制场景

时间:2014-12-10 03:38:36

标签: c++ opengl

我正在研究一个opengl程序。查看参数是: 眼睛0 -4 6 查看0 1 0 lookat 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();

1 个答案:

答案 0 :(得分:2)

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

找到纹理坐标

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