glOrtho,gluOrtho2D,glFrustum,glViewport解析
来源:互联网 发布:联通网络如何报修 编辑:程序博客网 时间:2024/05/17 01:11
glOrtho
glOrtho函数生成矩阵与当前矩阵相乘
void glOrtho(
GLdoubleleft,
GLdoubleright,
GLdoublebottom,
GLdoubletop,
GLdoublezNear,
GLdoublezFar
);
参数
left, right
剪接面左右纵面坐标。
bottom, top
剪接面上下水平面坐标
zNear, zFar
剪接面近处和远处深度距离。他们的距离为负数,平面将落于视图的后面
说明
glOrtho函数描述投影矩阵 (左,下,近)和(左,上,近)参数分别表示近平面,即窗口下左和上右的角点。假定眼睛的位置为(0, 0, 0)。那么远平面距离参数表示远剪切面的位置。近平面和远平面参数可以是任何的正数或者负数。相应矩阵为:
其中:
当前矩阵乘以这个矩阵得到结果代替当前矩阵。如:如果当前矩阵为M,Ortho矩阵为O,那么M被M*O代替。
使用glPushMatrix和glPopMatrix 保存和恢复当前矩阵堆。使用glMatrixMode设置当前矩阵。
下面函数获取描述glOrtho的信息:
glGet withargument GL_MATRIX_MODE
glGet with argumentGL_MODELVIEW_MATRIX
glGet with argumentGL_PROJECTION_MATRIX
glGet with argumentGL_TEXTURE_MATRIX
gluOrtho2D
gluOrtho2D函数定义了一个二维正交投影矩阵
void gluOrtho2D(
GLdouble left,
GLdouble right,
GLdouble bottom,
GLdouble top
);
参数
left, right
剪接面左右纵面坐标。
bottom, top
剪接面上下水平面坐标
说明
The gluOrtho2D 函数设置的二维正交投影范围,这是相当于调用了 near = 1 和far = 1的glOrtho
glFrustum
glFrustum函数,生成投影矩阵与当前矩阵相乘
void glFrustum(
GLdouble left,
GLdouble right,
GLdouble bottom,
GLdouble top,
GLdouble znear,
GLdouble zfar
);
参数
参数
left, right
剪接面左右纵面坐标。
bottom, top
剪接面上下水平面坐标
zNear, zFar
剪接面近处和远处深度距离。他们的距离为负数,平面将落于视图的后面
说明
glFrustum函数描述投影矩阵 (左,下,近)和(左,上,近)参数分别表示近平面,即窗口下左和上右的角点。假定眼睛的位置为(0, 0, 0)。那么远平面距离参数表示远剪切面的位置。近平面和远平面参数必须是正数。相应矩阵为:
glFrustum函数相乘当前矩阵得到的结果,代替当前矩阵。如果M是当前矩阵,F是frustum投影矩阵,那么glFrustum将使M = M·F。
使用glPushMatrix 和 glPopMatrix保存和恢复当前矩阵。
深度缓存精度受znear和zfar的影响。zfar和znear的比率越大,生成两个面的深度差别越大。如果:
roughly log (2) r bits of depth buffer precision arelost. Because r approaches infinity as znear approaches zero, youshould never set znear to zero.(这个地方没搞懂,请高人指点,哈哈哈哈)
关于glFrustum的相关信息通过下面函数获取:
glGet with argument GL_MATRIX_MODE
glGetwith argument GL_MODELVIEW_MATRIX
glGetwith argument GL_PROJECTION_MATRIX
glGetwith argument GL_TEXTURE_MATRIX
glViewport
glViewport函数设置视口
void glViewport(
GLintx,
GLinty,
GLsizei width,
GLsizei height
);
参数
x, y
视口矩形的左下角位置,像素为单位。默认为(0,0).
width, height
分别表示视口的宽度和高度。当OpenGL设备首先连接到窗口,width 和height为窗口尺寸。
说明
glViewport函数指明x和y有规范的设备坐标到窗口坐标的仿射变换。设(xnd,ynd)是规范的设备坐标。窗口坐标为(xw,yw),那么计算如下:
视口的宽度和高度是在执行过程中是不变的。这个范围可以调用glGet和参数GL_MAX_VIEWPORT_DIMS获得。
下面函数获取glViewport相关信息:
glGet with argument GL_VIEWPORT
glGetwith argument GL_MAX_VIEWPORT_DIMS
- glOrtho,gluOrtho2D,glFrustum,glViewport解析
- glOrtho,gluOrtho2D,glFrustum,glViewport解释说明
- opengl中的glViewport,glOrtho,glFrustum 理解
- 《高效学习OpenGL》之 投影变换 glFrustum(),gluPerspective(),glOrtho(),gluOrtho2D()
- gluOrtho2D glFrustum
- [转]OpenGL中glViewport和glOrtho和glFrustum
- gluOrtho2D与glViewport的区别
- gluOrtho2D() 结合glViewport() 的使用
- glFrustum(),glOrtho(),gluPerspective()的实例
- glViewPort() glOrtho()用法 (学习)
- glViewport()函数和glOrtho()函数
- glHint、gluLookAt、glOrtho、gluPerspective、glViewport
- glOrtho,glFrustum,gluPerspective的理解,很清楚
- glViewport()函数和glOrtho()函数的理解
- glViewport()函数和glOrtho()函数的理解
- glViewPort,glOrtho与视见区,修剪区间
- glViewport()函数和glOrtho()函数的用法
- glViewport()函数和glOrtho()函数的理解
- java常量池
- Python | Pip 安装模块速度MB级提升
- 如何递归遍历文件夹里所有文件
- 将BUFG上的时钟信号通过FPGA的普通IO输出
- HDU-6178 Monkeys
- glOrtho,gluOrtho2D,glFrustum,glViewport解析
- SpringMVC拦截器(Interceptor)
- 解决jk安装时出现的问题:autoconf not found.You need autoconf version 2.59 or newer installed
- hdu 1210 洗牌
- Android 5.0输入系统分析之InputDispatcher线程分析
- C/C++基础及高频率面试知识总结
- cookie
- SSH框架总结分析
- SmartRefreshLayout+CommonAdapter打造上拉加载下拉刷新界面