这就是问题所在:我目前在OpenGL的眼睛空间,现在我想做一个黑色的矩形,以涵盖所有窗口的面积。我如何确定一个准确的X,Y,Z的位置来做到这一点?
更新或者有人能告诉我,当我们有Z值时,如何确定窗口的X、Y(左上角)?
pb3s4cty1#
你可以试着计算一个完全适合相机的矩形,然后从那里开始。要做到这一点,你需要考虑投影矩阵并计算逆矩阵。然而,有一个更简单的方法。你所要做的就是临时改变相机,这样你就知道如何绘制矩形了。一个足够简单的相机是默认的正交相机,有简单的限制(从-1到1)。下面的方法可以做到这一点:
glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity(); glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity(); 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);
1条答案
按热度按时间pb3s4cty1#
你可以试着计算一个完全适合相机的矩形,然后从那里开始。要做到这一点,你需要考虑投影矩阵并计算逆矩阵。
然而,有一个更简单的方法。你所要做的就是临时改变相机,这样你就知道如何绘制矩形了。一个足够简单的相机是默认的正交相机,有简单的限制(从-1到1)。下面的方法可以做到这一点: