菜鸟,一个有关glOrtho函数的使用有关问题!
初学者,一个有关glOrtho函数的使用问题!!!!
参考手册上说glOrtho这个函数的最后两个参数 如果是负的
说明两个截取平面在观察者的后方怎么理解?OpenGL不是与照相机类似吗?难道在照相机后面的物体也能看到吗?
大家看看我的这段代码:
void display(void)
{
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 1.0);
glBegin(GL_POLYGON);
glVertex3f (0.25, 0.25, 3);
glVertex3f (0.75, 0.25, 3);
glVertex3f (0.75, 0.75, 3);
glVertex3f (0.25, 0.75, 3);
glEnd();
glFlush ();
}
void init (void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, 1.0, 0.0, 1.0, -2.0, -4.0);
}
视点取默认值,观察方向在Z轴否方向!
------解决方案--------------------
负数就是说从观察点后方的那个位置算起
与照相机能恰当类比是透视投影,正交投影跟照相机还是有很大差别。毕竟现实中没有正交投影的照相机。
如果最小z的参数为负数,是可以画出正交投影的视景体的,所以OpenGL在glOtho中允许了负数。而在透视投影中(glFrustum()和gluPerspective()),如最小z为负数,则这个视景体就画不出来了,所以OpenGL对这两个函数的最小z做了限制,不能是负数
参考手册上说glOrtho这个函数的最后两个参数 如果是负的
说明两个截取平面在观察者的后方怎么理解?OpenGL不是与照相机类似吗?难道在照相机后面的物体也能看到吗?
大家看看我的这段代码:
void display(void)
{
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 1.0);
glBegin(GL_POLYGON);
glVertex3f (0.25, 0.25, 3);
glVertex3f (0.75, 0.25, 3);
glVertex3f (0.75, 0.75, 3);
glVertex3f (0.25, 0.75, 3);
glEnd();
glFlush ();
}
void init (void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, 1.0, 0.0, 1.0, -2.0, -4.0);
}
视点取默认值,观察方向在Z轴否方向!
------解决方案--------------------
负数就是说从观察点后方的那个位置算起
与照相机能恰当类比是透视投影,正交投影跟照相机还是有很大差别。毕竟现实中没有正交投影的照相机。
如果最小z的参数为负数,是可以画出正交投影的视景体的,所以OpenGL在glOtho中允许了负数。而在透视投影中(glFrustum()和gluPerspective()),如最小z为负数,则这个视景体就画不出来了,所以OpenGL对这两个函数的最小z做了限制,不能是负数