那是问题:我目前在 OpenGL 眼睛空间中,现在我想制作一个黑色矩形来覆盖所有窗口区域。我怎样才能确定一个确切的 X、Y、Z 位置来做到这一点?
更新 或者有人可以告诉我当我们有 Z 值时如何确定窗口的 X、Y(左上角)?
那是问题:我目前在 OpenGL 眼睛空间中,现在我想制作一个黑色矩形来覆盖所有窗口区域。我怎样才能确定一个确切的 X、Y、Z 位置来做到这一点?
更新 或者有人可以告诉我当我们有 Z 值时如何确定窗口的 X、Y(左上角)?
您可以尝试计算一个完全适合相机的矩形,然后从那里开始。为此,您需要考虑投影矩阵并计算逆矩阵。
但是,有一个更简单的方法。您所要做的就是临时更改相机,以便您确切知道如何绘制矩形。一个足够简单的相机是默认的正交相机,具有简单的限制(从 -1 到 1)。以下是这样做的:
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdendity();
glBegin(GL_QUAD);
glVertex2f(-1.f, -1.f);
glVertex2f(1.f, -1.f);
glVertex2f(1.f, 1.f);
glVertex2f(-1.f, 1.f);
glEnd();
glPopMatrix();
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);