opengl学习笔记(3)

在执行模型和视图变换之前需调用glMatrixMode(GL_MODELVIEW); glLoadIdentity();

模型变换函数

1.glTranslate{fd}(type x,type y,type z)  平移 如glTranslatef(0,0,1)

2.glRotate{fd}(type angle,type x,type y,type z) 旋转 angle为角度 向量(x,y,z)为旋转中心轴

3.glScale{fd}(type x,type y,type 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表示哪个方向朝上


在执行投影变换之前需调用glMatrixMode(GL_PROJECTION); glLoadIdentity();

透视投影

glFrustum(GLdouble left,GLdouble right,

          GLdouble bottom,GLdouble top,

          GLdouble near,GLdouble far)

定义一个平截头视景体 (left,top,-near)和(right,bottom,-near)表示近侧剪裁平面左上角和右下角的(x,y,z)坐标,near和far表示从观察点到近侧和远侧剪裁平面的距离(沿z负方向)

有时候并不能知道两个角点的坐标.....

gluPerspective(GLdouble fovy,GLdouble aspect,

               GLdouble near,GLdouble far)

fovy是yz平面上视野的角度,0~180之间  aspect是平截头体的纵横比(w/h) near和far为观察点到近侧和远侧剪裁平面的距离(沿z负方向)

正投影

glOrtho(GLdouble left,GLdouble right,

          GLdouble bottom,GLdouble top,

          GLdouble near,GLdouble far)

创建一个正交平行视景体。(left,top,-near)和(right,bottom,-near)表示近侧剪裁平面左上角和右下角的(x,y,z)坐标,(left,top,-far)和(right,bottom,-far)表示远侧剪裁平面左上角和右下角的(x,y,z)坐标。near和far可正可负不应相等

glOrtho2D(GLdouble left,GLdouble right,

          GLdouble bottom,GLdouble top)

表示二维图像投影到二维屏幕


视口变换

glViewPort(GLint x,GLint y,GLsizei width,GLsizei height)

定义一个像素矩形 把图像映射到这个矩形中。(x,y)定义视口左下角,width宽度 height高度

默认情况下为(0,0,winWidth,winHeight) --窗口大小


操纵矩阵堆栈

glPushMatrix(); 复制当前顶部矩阵 压入堆栈  相当于记住当前位置   (1,2,3,4)->(1,2,3,4,4)

glPopMatrix(); 弹出当前堆栈顶部矩阵  相当于回到原来位置  (1,2,3,4,4)->(1,2,3,4)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值