glShadeModel,gluPerspective和gluLookAt

来源:互联网 发布:大猩猩和人杂交知乎 编辑:程序博客网 时间:2024/05/02 00:31

1.glShadeModel原型为:void glShadeModel ( GLenum mode);

作用:设置着色模式。参数mode可以是GL_SMOOTH(默认值)或GL_FLAT。

采用恒定着色时就用GL_FLAT,也就是说使用图元中的某个顶点的颜色来渲染整个图元。

使用光滑着色时就用GL_SMOOTH,独立处理图元中各个顶点的颜色。对于线段图元,

线段上各点的颜色将根据两个顶点的颜色通过插值得到。对于多边形图元,多边形内部区

域的颜色将根据所有顶点的颜色插值得到。

2.gluPerspective原型为void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear, GLdouble zFar);

其参数:fovy指定视景体的视野的角度,以度为单位y轴的上下方,也就是视野在X-Z平面的角度,范围是

[0.0, 180.0];当角度为0时表示视野为0,什么也看不到。当为180时表示视野宽阔。

fovy越大,裁剪窗口就越大,相对裁剪窗口中的物体就越小。

aspect:投影平面宽度与高度的比率,鸡实际窗口的纵横比x/y

zNear: 表示近处的裁面    zFar:表示远处的裁面。参数zNear和zFar分别是远近裁面沿z负轴到视点的距离

它们总为正值。

透视投影就透视投影是用中心投影法将形体投射到投影面上,从而获得的一种较为接近视觉效果的单面投影图

透视投影符合人类心理习惯,即离视点近的物体大,离视点远的物体小,远到极点即为消失,成为灭点。


3.glutPostRedisplay原型为void glutPostRedisplay(void);表示标记当前窗口需要重新绘制。

通过glutMainLoop下一次循环时,窗口显示将被回调以重新显示窗口的正常面板。多次调用

glutPostRedisplay,在下一个显示回调只产生单一的重新显示回调。

4.gluLookAt为视点转换,其函数原型为

void gluLookAt(GLdouble eyex,GLdouble eyey,GLdouble eyez,GLdouble centerx,GLdouble centery,GLdouble centerz,GLdouble upx,GLdouble upy,GLdouble upz); 该函数定义一个视图矩阵,并与当前矩阵相乘。
eyex, eyey,eyez 指定视点的位置 
centerx,centery,centerz 指定参考点的位置

upx,upy,upz 指定视点向上的方向

gluLookAt()共有九个参数,分别是眼睛的位置,眼睛朝向的位置,以及相片朝上的方向。 

这个函数是对模型矩阵进行变换(GL_MODELVIEW),而gluPerspective函数是对投影矩阵进行变换(GL_PROJECTION),这一点一定要搞清楚。在实际应用时,可以用gluPerspective函数设置近平面、远平面。

原创粉丝点击