有3种模式:
- GL_MODELVIEW 模视变换,
- GL_PROJECTION 投影变换,
- GL_TEXTURE 纹理映射
在进行变换前,应先设置当前 *** 作的矩阵为“模型视图矩阵”;
- glTranslatef(GLfloat x,GLfloat y,GLfloat z)
- glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)把当前矩阵和一个表示移动物体的矩阵相乘。
函数功能:沿X轴正方向平移x个单位(x是有符号数), 沿Y轴正方向平移y个单位(y是有符号数), 沿Z轴正方向平移z个单位(z是有符号数).
- glScalef(GLfloat x, GLfloat y, GLfloat z)把当前矩阵和一个表示旋转物体的矩阵相乘。
函数功能:以点(0,0,0)到点(x,y,z)为轴,逆时针旋转angle角度;
把当前矩阵和一个表示缩放物体的矩阵相乘。
函数功能:三个参数表明了在各自轴上的缩放比例。
观察变换矩阵
- 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
相机向上的方向在世界坐标中的方向.你把相机想象成为你自己的脑袋:
第一组数据就是脑袋的位置
第二组数据就是眼睛看的物体的位置
第三组就是头顶朝向的方向(因为你可以歪着头看同一个物体)。
平行投影
- glOrtho(GLDouble left, GLDouble right, GLDouble bottom, GLDouble top, GLdouble near, GLdouble far);该函数决定了我们在三维世界中所能观察到的一个矩形区域,
第一三五个参数决定了矩形区域左下前点的位置,
二四六决定矩形区域右上后点的位置,
注意该点不是世界坐标,而是相对摄像机的位置。
透视投影
- glPushMatrix 和 glPopMatrix通常,矩阵模式是GL_PROJECTION,
假设眼睛的位置在(0,0,0), (left, bottom, -near) 和(right, top, -near)指明了近切面的点,并且被映射到窗口的左下角和右上角。
-far指明了远切面的位置。near 和 far都必须是正数
来保存或恢复缩放前的坐标系统
当你做了一些移动或旋转等变换后,使用glPushMatrix(); OpenGL 会把这个变换后的位置和角度保存起来。
然后你再随便做第二次移动或旋转变换,再用glPopMatrix();
比如:
glLoadIdentity();//设置当前的矩阵为单位矩阵。
glTranslatef(1,0,0);//向右移动(1,0,0)
glPushMatrix();//保存当前位置
glTranslatef(0,1,0);//现在是(1,1,0)了
glPopMatrix();//这样,现在又回到(1,0,0)了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)