OpenGL 函数 gluLookAt() glScalef() glTranslatef() glRotatef() glFrustum() glPerspective() 的使用
2014-05-22 11:01
573 查看
1.gluLookAt()——视图变换函数
把自己的眼睛当成是照相机,前三个参数表示眼睛的坐标,中间三个参数表示要拍照的物体的中心位置,可以理解成焦点吧,
后三个参数表示头顶的朝向,比如说头可以歪着(哈哈)。但是我测试过,如果歪的不对,原来的正前方现在已经不是正前方
了,那么就看不见物体了。举个例子:
gluLookAt (0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);//这个就表示头顶是朝着y方向
gluLookAt (0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0);//这个表示头歪了45度,头顶朝着(1.0,1.0,0.0)这个方向
2.glScalef() ——模型变换函数 缩放
void glScalef(GLfloat x, GLfloat y, GLfloat z);
模型变换的目的是设置模型的位置和方向,例如可以对模型进行旋转、移动和缩放,或者联合这几种操作。
这个函数表示模型在各轴上是如果进行缩放的。举个例子:
glScalef (1.0, 2.0, 1.0);//表示y坐标值扩大两倍,这样原本方的物体就变成长的了。
3.glTranslatef() ——模型变换函数 移动
void glTranslatef(GLfloat x, GLfloat y, GLfloat z);
这个函数表示模型是怎样移动的。举个例子:
glTranslatef(-1.0,0.0,-2.0);//表示物体沿x负方向移动1.0,沿z轴负方向移动2.0。所以就好像能看见侧面一样
4.glRotatef()——模型变换函数 旋转
void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
angle表示旋转的角度(注意单位不是弧度),(x,y,z)表示转轴。举个例子:
glRotatef(45.0, 0.0, 0.0, 1.0);//表示模型沿着(0,0,1)这个轴旋转45°。
5.glFrustum() ——投影变换函数 透视投影
前四个参数表示裁剪范围,后两个参数(要求为正数)表示近的面和远的面离眼睛的距离。有点儿像调焦。裁剪完后拉伸铺满整个屏幕。
6.glPerspective() ——投影变换函数 透视投影
void gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);
第一个参数表示在y方向上的视角度数。个人理解:比如45,表示眼睛和模型中心这个条线与y轴的夹角。
第二个参数表示纵横比。x/y。比如2表示x、y本来都是1个长度,现在x可以当两个长度用,这样,模型就好像被x方向压缩了一样。
后两个参数glFrustum()中后两个相近。要求都是正数。
void glGenTextures(GLsizei
n, GLuint *texture);
该函数用来产生纹理名称。这里纹理名称GLuint *texture是整型的,因此也可以理解为这个函数为这n个纹理指定了n个不同的ID。
在用GL渲染的时候,纹理是很常见的东西。使用纹理之前,必须执行这句命令为你的texture分配一个ID,然后绑定这个纹理,加载纹理图像,这之后,这个纹理才可以使用。
glBindTexture函数
glBindTexture函数实现了将调用glGenTextures函数生成的纹理的名字绑定到对应的目标纹理上。
该函数的声明如下所示:
void glBindTexture(
GLenum target,
GLuint texture
);
函数参数的含义:
target —— 纹理被绑定的目标,它只能取值GL_TEXTURE_1D或者GL_TEXTURE_2D;
texture —— 纹理的名称,并且,该纹理的名称在当前的应用中不能被再次使用。
glTexImage2D()的用法举例
glTexImage2D(GL_TEXTURE_2D, //此纹理是一个2D纹理
0, //代表图像的详细程度, 默认为0即可
3, //颜色成分
TextureImage[0]->sizeX, //纹理的宽度
TextureImage[0]->sizeY, //纹理的高度
0,
//边框的值
GL_RGB, //告诉OpenGL图像数据由红、绿、蓝三色数据组成
GL_UNSIGNED_BYTE, //组成图像的数据是无符号字节类型
TextureImage[0]->data); //告诉OpenGL纹理数据的来源,此例中指向存放在TextureImage[0]记录中的数据
gluBuild2DMipmaps()的用法举例
gluBuild2DMipmaps(GL_TEXTURE_2D,//此纹理是一个2D纹理
3, //颜色成分
TextureImage[0]->sizeX, //纹理的宽度
TextureImage[0]->sizeY, //纹理的高度
GL_RGB, //告诉OpenGL图像数据由红、绿、蓝三色数据组成
GL_UNSIGNED_BYTE, //组成图像的数据是无符号字节类型
TextureImage[0]->data); //告诉OpenGL纹理数据的来源,此例中指向存放在TextureImage[0]记录中的数据
相关文章推荐
- OpenGL 函数 gluLookAt() glScalef() glTranslatef() glRotatef() glFrustum() glPerspective() 的使用
- OpenGL 函数 gluLookAt() glScalef() glTranslatef() glRotatef() glFrustum() glPerspective() 的使用
- OpenGL 函数 gluLookAt() glScalef() glTranslatef() glRotatef() glFrustum() glPerspective() 的使用
- OpenGL 函数 gluLookAt() glScalef() glTranslatef() glRotatef() glFrustum() glPerspective() 的使用
- OpenGL 函数 gluLookAt() glScalef() glTranslatef() glRotatef() glFrustum() glPerspective() 的使用
- OpenGL 函数 gluLookAt() glScalef() glTranslatef() glRotatef() glFrustum() glPerspective() 的使用
- 【转】OpenGL 函数 gluLookAt() glScalef() glTranslatef() glRotatef() glFrustum() glPerspective() 的使用
- OpenGL 函数 gluLookAt() glScalef() glTranslatef() glRotatef() glFrustum() glPerspective() 的使用
- OpenGL 函数 gluLookAt() glScalef() glTranslatef() glRotatef() glFrustum() glPerspective() 的使用
- gluLookAt、glTranslatef、glRotatef
- OpenGL织梦之旅【第四章】第1节.设置视点函数gluLookAt
- OpenGL: gluLookAt函数详解
- 转 在OpenGL中使用gluLookAt实现漫游
- OpenGL函数思考-gluLookAt
- OpenGL的gluLookAt观察变换函数详解
- OpenGL视图--gluPerspective glOrtho glFrustum gluLookAt
- OpenGL之gluLookAt函数
- OpenGL函数思考-gluLookAt
- OpenGL之gluLookAt()函数
- Opengl---gluLookAt函数详解