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() 的使用相关推荐

  1. 《高效学习OpenGL》之模型变换 glTranslatef(), glRotatef(),glScalef()

    1.移动 glTranslatef (GLfloat x, GLfloat y, GLfloat z);//把当前矩阵与一个表示移动物体的矩阵相乘.这个矩阵有x, y, z指定 2.旋转 glRota ...

  2. glOrtho、glFrustum glPerspective

    glOrtho         :正交投影,摄像机可以位于裁剪体内,所以near和far可以取两个正值或者一正一负 glFrustum     :透视投影,摄像机不可以位于裁剪体内,所以near和fa ...

  3. OpenGL函数思考-glOrtho

    OpenGL函数思考-glOrtho 函数原型: void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdo ...

  4. OpenGL的gluLookAt和gluPerspective详解

    对于二维的图形开发,拿简单的图片显示来说,我们主要的目的:就是在一块显示buffer中,不停的把每个像素进行着色,然后就可以绘制出来了.为了速度,很多其他的加速方法,但原理基本上就是这样了. 很直观, ...

  5. GPU随想——OpenGL函数加载流程

    导航: GLX基本流程 OpenGL函数的分发 到底什么是context? -----------------------------读前须知------------------------- 历代d ...

  6. OpenGL之gluLookAt 函数详解

    本文代码是基于上一篇文章"基于Viusal C++ 2015 MFC单文档程序中搭建OpenGL框架"的基础上运行 void gluLookAt(GLdouble eyex,GLd ...

  7. OpenGL es gluLookAt 函数

    OpenGL es 没有gluLookAt 函数,从外网找了一个 附链接 gluLookAt函数 为了方便不会墙的同志,附代码 已调试使用,正常! object c 和 c++混编的同志在使用时删掉以 ...

  8. gluLookAt、glTranslatef、glRotatef

    glRotatef:把当前矩阵和一个表示旋转物体的矩阵相乘.物体将绕着(0,0,0)到(x,y,z)的直线以逆时针旋转,参数angle表示旋转的角度: glTranslatef:把当前矩阵和一个表示移 ...

  9. OpenGL函数思考-glRotatef

    函数原型:       void glRotated(GLdouble angle,GLdouble x,GLdouble y,GLdouble z)       void glRotatef(GLf ...

最新文章

  1. JVM---虚拟机栈(操作数栈)
  2. ecshop订单-》待付款,待发货,待收货,收货确认
  3. 【linux系统】maven安装
  4. php mysql 表字段_php mysql获取表字段名称和字段信息的三种方法
  5. python 查找算法_python快速查找算法应用实例
  6. 点击文本框后页面变大
  7. SaaS:新智能背景下重构各个领域的生态系统
  8. 阅读芯片手册与STC16F40K128芯片手册阅读
  9. 【iOS与EV3混合机器人编程系列之一】iOS要干嘛?EV3可以更酷!
  10. 重庆大学计算机学院研究生奖学金评定准则,重庆大学经管学硕士生奖学金评定办法(试行).doc...
  11. 判断三维空间中三点是否共线
  12. 计算机总是提醒更新,联想电脑老提示更新怎么办啊
  13. 菜鸟学习c语言之路开始
  14. STL 常用容器的底层数据结构实现
  15. postgresql standard_conforming_strings参数
  16. 著名数学大师丘成桐:我们为什么要读数学科普书【有视频】
  17. 那些害惨我们的伪科学(上)
  18. Java实现word、excel、ppt转pdf文件,pdf转图片(无水印)
  19. 用python计算个人所得税税率表_Python实现的个人所得税计算器
  20. 常见的文件系统格式(带你快速了解)

热门文章

  1. img src 引入base64格式数据 显示图片
  2. Leaaner Style Sheets(Less)
  3. eclipse启动tomcat慢
  4. 怎样解决在Word中插入公式后行距变宽了
  5. iMeta | Sangerbox: 交互式整合临床生信分析平台
  6. ios视频通话三方_iOS基于Socket.io即时通讯IM实现,WebRTC实现视频通话
  7. 人工智能可以用来制作电影吗?
  8. vue实现时间戳格式化
  9. R.dimen文件:
  10. 计算机性能用途说明,工控机的用途及特点说明