因此,我冒险进入openGL并学习绘制形状。所以我有以下代码绘制多边形,它应该工作。我有两个问题1.如果我评论glTranslatef
它有效,但如果我离开它它什么都没有。我理解glTranslatef
是为了运动所以因为没有形状意味着它会被移走?如果是这样的话我该如何让它移动但是回来以便我可以看到它?
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0.0f,0.0f,-4.0f);
glColor3f(0.0f,0.0f,1.0f);
glBegin(GL_POLYGON);
glVertex3f(-0.2f,0.2f,0.0f);
glVertex3f(0.2f,0.2f,0.0f);
glVertex3f(0.6f,0.0f,0.0f);
glVertex3f(0.2f,-0.2f,0.0f);
glVertex3f(-0.2f,-0.2f,0.0f);
glVertex3f(-0.6f,0.0f,0.0f);
glEnd();
答案 0 :(得分:0)
视口在您正在使用的坐标空间的所有方向上从[-1,1]延伸(标准化设备坐标)。 z轴是这样的,+ z指向正前方,-z指向后方, -1.0 表示您可以看到的最近点(靠近平面)。
通过翻译 0 中的所有 -4 单位,您已将多边形 3 单位移到后面Z轴。只要您将平移限制在z轴上的+/- 1.0 单位内,这样就可以正常工作,但是你已经远远超出了这个范围。
但是,请注意,由于您没有使用透视投影,因此您不会在此多边形中看到任何视觉差异,因为它会远离您或更近(尺寸不会随距离而变化)。一旦你将它移动到足够远的距离(超出范围[-1,1]),它就会消失。
<小时/> 大多数情况下,NDC不是一个特别有用的坐标空间,因此您可以使用非标识型ModelView和Projection矩阵来定义更大且更受控制的查看量。目前,您正在NDC工作,因为您有身份矩阵。