opengl学习笔记(3)
2013-01-17 14:43
465 查看
在执行模型和视图变换之前需调用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)
模型变换函数
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)
相关文章推荐
- opengl学习笔记——纹理贴图
- OpenGL学习笔记 显示列表
- LearnOpenGL学习笔记6:坐标
- 用glew,glfw,FreeImage实现opengl学习笔记6坐标变换
- LearnOpenGL学习笔记7:摄像机
- OpenGL学习笔记(14)像素操作
- Opengl学习笔记之Textures
- OpenGL学习笔记4:纹理
- OpenGL学习笔记--freeglut
- opengl学习笔记一之第一个程序
- OpenGL学习笔记:文字显示
- opengl学习笔记--2017.11.26
- OpenGL4.x 学习笔记:安装&配置 - preparation
- OpenGL学习笔记[3]:#pragma comment
- OpenGL学习笔记(四)
- OPENGL学习笔记之二
- OpenGL学习笔记2:绘制和混合
- OpenGL学习笔记(五)
- OpenGL学习笔记索引
- openGL学习笔记一:环境搭建