opengl es2.0之Matrix.setLookAtM解析
来源:互联网 发布:影楼软件下载第一站 编辑:程序博客网 时间:2024/05/22 00:36
这个东西纠结了一段时间终于整明白是怎么回事了。
Matrix.setLookAtM是2.0中设置观察视角的函数。对他的理解参考了这篇文章:http://www.360doc.com/content/14/1028/10/19175681_420515511.shtml还有其他文章。
注意只是参考理解,gl的函数和这里Matrix.setLookAtM的参数是不一样的,要是以为一样就会混乱了。
这张图显示了相机观察物体的范围(蓝色区域)方向(VPN)
看看2.0的函数是怎样的
Matrix.setLookAtM(mViewMatrix, 0,
eyeX, eyeY, eyeZ, //相机坐标
lookX, lookY, lookZ, //目标坐标,与gl中的VPN是不一样的
upX, upY, upZ); //相机正上方向量VUV
其中mViewMatrix就是最后保存设置参数的矩阵
下面举个栗子:三角形
1.我要在屏幕上绘制一个三角形
0-------1------------2
2.定义三角形在屏幕上的坐标
y | | |- - - - - x / / z妈蛋,这坐标系也是真心难画//设置三角形顶点数组 static float triangleCoords[] = { -1f,1f,0f, // 0,top left 1f,1f,0f, // 1,top right -1f,-1f,0f, // 2,bottom left };
所以自然的,3点z轴为0,这个三角是画在X-Y平面上的,对于手机来说,z轴就是垂直屏幕向外的方向,所以正好绘制到屏幕上
那如何设置相机参数呢,
Matrix.setLookAtM(mVMatrix, 0, 0f, 0f, 5f, //相机坐标 0f, 0f, 0f, //目标坐标 0.0f, 1.0f, 0.0f); //相机正上方向量
相机的位置在X_Y平面上方,所以是0,0,z
目标(三角形的中心)坐标在原点
此时相机位置确定了,但是相机朝哪看还没确定,由于此时是俯视X-Y的,所以相当于下图
y0-------1 x------------2
为了得到正确的图,相机顶部方向应该指向y轴,所以是0,1,0
如果设置了1,0,0则指向x轴,会变成这样
x 1 | | | | | | y | | | | 2 0
- opengl es2.0之Matrix.setLookAtM解析
- Android openGL ES2.0 Matrix.frustumM和Matrix.setLookAtM解析
- Android openGL ES2.0 Matrix.frustumM和Matrix.setLookAtM解析
- Android openGL ES2.0 Matrix.frustumM和Matrix.setLookAtM解析
- OpenGL es2.0 配置自己的matrix
- openGL es2.0 粒子系统之烟花
- OpenGL ES2.0之iOS基础<一>
- OpenGL ES2.0之iOS基础<一>
- opengl-es2.0之相机MVP矩阵
- 初识openGL ES2.0
- OpenGL ES2.0 初步
- OpenGL ES2.0基础
- Android OpenGL ES2.0
- 关于OpenGL ES 2.0中 相机视觉,也就是Matrix.setLookAtM()参数的详细解说
- Opengl ES2.0之纹理拉伸采样小结
- Opengl ES2.0之mipmap纹理技术小结
- OpenGL ES2.0 学习之旅(Pre 1)
- openGL es2.0 粒子系统方式之球体爆炸
- Ubuntu使用记录-常用应用
- 解决Qt中各种乱码问题
- 关于如何使用枚举类的values方法!
- 在linux(CentOS)上搭建git服务器和配置gitolite权限管理
- 软件的分类定义
- opengl es2.0之Matrix.setLookAtM解析
- GLSL 内建变量
- 欢迎使用CSDN-markdown编辑器
- freeswitch结构之switch_channel_t
- TextView之富文本
- Linux下Redis的安装与配置
- 关于C++的深入理解
- R连接hbase错误(Can't get the location)
- 利用JavaFx开发RIA桌面应用-在线资料