【OpenGL C++】一些常用的函数,如glMatrixMode

【OpenGL C++】一些常用的函数,如glMatrixMode,第1张

变换矩阵 *** 作

glMatrixMode()

有3种模式:

  • GL_MODELVIEW 模视变换,
  • GL_PROJECTION 投影变换,
  • GL_TEXTURE 纹理映射
世界坐标系到观察坐标系的变换-模视变换 - glMatrixMode( GL_MODELVIEW )
在进行变换前,应先设置当前 *** 作的矩阵为“模型视图矩阵”;
- glTranslatef(GLfloat x,GLfloat y,GLfloat z)

把当前矩阵和一个表示移动物体的矩阵相乘。
函数功能:沿X轴正方向平移x个单位(x是有符号数), 沿Y轴正方向平移y个单位(y是有符号数), 沿Z轴正方向平移z个单位(z是有符号数).

- glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)

把当前矩阵和一个表示旋转物体的矩阵相乘。
函数功能:以点(0,0,0)到点(x,y,z)为轴,逆时针旋转angle角度;

- glScalef(GLfloat x, GLfloat y, GLfloat z)

把当前矩阵和一个表示缩放物体的矩阵相乘。
函数功能:三个参数表明了在各自轴上的缩放比例。

观察变换矩阵

- 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);

该函数决定了我们在三维世界中所能观察到的一个矩形区域,
第一三五个参数决定了矩形区域左下前点的位置,
二四六决定矩形区域右上后点的位置,
注意该点不是世界坐标,而是相对摄像机的位置。

透视投影

- glFrustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near, GLfloat far);

通常,矩阵模式是GL_PROJECTION,
假设眼睛的位置在(0,0,0), (left, bottom, -near) 和(right, top, -near)指明了近切面的点,并且被映射到窗口的左下角和右上角。
-far指明了远切面的位置。near 和 far都必须是正数

- glPushMatrix 和 glPopMatrix

来保存或恢复缩放前的坐标系统

当你做了一些移动或旋转等变换后,使用glPushMatrix(); OpenGL 会把这个变换后的位置和角度保存起来。
然后你再随便做第二次移动或旋转变换,再用glPopMatrix();

比如:
glLoadIdentity();//设置当前的矩阵为单位矩阵。
glTranslatef(1,0,0);//向右移动(1,0,0)
glPushMatrix();//保存当前位置
glTranslatef(0,1,0);//现在是(1,1,0)了
glPopMatrix();//这样,现在又回到(1,0,0)了

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/726763.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存