位置: 编程技术 - 正文
推荐整理分享OpenGL矩阵API的使用方法(opengl arb),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:opengl matrix,opengl画矩形函数,opengl模型变换矩阵,opengl画矩形函数,opengl 矩阵,opengl matrix,opengl mvp矩阵 理解 举例手写,opengl模型变换矩阵,内容如对您有帮助,希望把文章链接给更多的朋友!
在OpenGL 1.x中包含了一系列的矩阵操作函数,下面我对这些函数的使用方式做个总结。
在介绍这些函数之前,我先引入一些数学符号以便更简明的表达我的意思。下面就开始了:
1,M表示当前矩阵;
2,R表示旋转矩阵;
3,S表示缩放矩阵;
4,T表示平移矩阵;
5,K[i]表示当前矩阵栈的顶部元素, K表示一个数组,i表示栈的顶部元素的索引;
6,I表示单位矩阵。
好了,符号就这么几个,下面开始介绍各个函数的使用方式。
1,glMatrixMode(int mode);
这个函数用来设定哪种矩阵为当前的操作矩阵,mode的可以为以下常量的一种:
(1) GL_PROJECTION
(2) GL_MODELVIEW
(3) GL_TEXTURE
(4) GL_COLOR (这个需要ARB_image扩展)
2, glLoadIdentity();
将当前矩阵设置为单位矩阵, 也就是
M = I.
3,glPushMatrix();
将当前矩阵保存到矩阵栈的栈顶,也就是
K[i] = M.
每种矩阵栈的深度是不一样的,MODELVIEW的深度至少为, 其它类型的深度至少为2.
每种矩阵栈的最大深度可以用glGetIntegerv方法查询出来,具体如下:
(1) glGetIntegerv(GL_MAX_MODELVIEW_STACK_DEPTH, &max) 获取MODELVIEW栈的最大深度
(2) glGetIntegerv(GL_MAX_PROJECTION_STACK_DEPTH, &max) 获取PROJECTION栈的最大深度
(3) glGetIntegerv(GL_MAX_TEXTURE_STACK_DEPTH, &max) 获取TEXTURE栈的最大深度
同样的,去掉MAX_字符可以获取当前栈的深度。
4,glRotate(float angle, float x, float y, float z)
在当前矩阵上乘以一个旋转矩阵,也就是
M = M * R
angle表示要旋转多少度,该是个角度(degree, 0 - 度)的形式.
<x, y, z>表示旋转轴,一般为单位向量。
5,glScale(float x, float y, float z)
在当前矩阵上乘以一个缩放矩阵, 也就是
M = M * S
<x, y, z>表示相对应的顶点坐标的x,y,z的缩放比,默认都是1.
6,glTranslatef(float x, float y, float z)
在当前矩阵上乘以一个平移矩阵, 也就是
M = M * T
<x,y,z>表示偏移量。
7, glPopMatrix()
将矩阵栈顶部的元素弹出并赋给当前矩阵
M = K[--i];
8,glLoadMatrix(GLfloat* m)
将m的赋给当前矩阵
M = m;
9, glMultMatrix(GLfloat* m)
在当前矩阵上乘以另一个矩阵m, 也就是
M = M * m
opengl shader 学习 随笔四 一个典型的shader程序,看完这个基本shader的流程就没有问题了。constchar*vShader={//Vertexshader#versioncorenuniformUniforms{vec3translation;floatscale;vec4rotation;boolenable
OpenGL基础图形编程 转载:
OpenGL学习日记-..--简单裁剪 Opengl中,除了视景体的立方体裁剪平面之外,另外还可以额外指定多达6个裁剪平面,对视景体做进一步限制。每一个平面都由平面公式定义:AxByCzD=0.裁
标签: opengl arb
本文链接地址:https://www.jiuchutong.com/biancheng/373176.html 转载请保留说明!友情链接: 武汉网站建设