cocos2dx 透视设置分析
来源:互联网 发布:sql union join的区别 编辑:程序博客网 时间:2024/06/07 03:19
cocos2dx 透视设置分析
转自:http://chenliang.info/blog/cocos2dx透视设置分析/
cocos2dx CCDirector 默认用的是3d投影,之前看到它里面关于设置投影矩阵的代码里写了一些数字,当时没太当回事,今天正好有时间琢磨了一下才知道它是干嘛的,记录一下。
代码长这个样子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
void
CCDirector::setProjection(ccDirectorProjection kProjection)
{
//省略了一些无关代码
case
kCCDirectorProjection3D:
{
float
zeye =
this
->getZEye();
kmMat4 matrixPerspective, matrixLookup;
kmGLMatrixMode(KM_GL_PROJECTION);
kmGLLoadIdentity();
// issue #1334
kmMat4PerspectiveProjection( &matrixPerspective, 60, (GLfloat)size.width/size.height, 0.1f, zeye*2);
// kmMat4PerspectiveProjection( &matrixPerspective, 60, (GLfloat)size.width/size.height, 0.1f, 1500);
kmGLMultMatrix(&matrixPerspective);
kmGLMatrixMode(KM_GL_MODELVIEW);
kmGLLoadIdentity();
kmVec3 eye, center, up;
kmVec3Fill( &eye, size.width/2, size.height/2, zeye );
kmVec3Fill( ¢er, size.width/2, size.height/2, 0.0f );
kmVec3Fill( &up, 0.0f, 1.0f, 0.0f);
kmMat4LookAt(&matrixLookup, &eye, ¢er, &up);
kmGLMultMatrix(&matrixLookup);
}
break
;
//同样省略了一些无关代码
}
1
2
3
4
float
CCDirector::getZEye(
void
)
{
return
(m_obWinSizeInPoints.height / 1.1566f);
}
好奇心强的小盆友肯定会问 高亮的地方 60,0.1,1.1566 这都是什么啊,代码里面写魔数不是要tcqtjjtds吗?
分析起来其实挺简单的,其实上面有意义的只是那个60度和1.1566两个,远近裁减平面只要合法就ok,那么为啥是这俩值呢,我画了一下图:
看完了这张图,相信聪明的你也明白了吧,那个1.1566f实际上就是 tan(60/2)*2。
换成别的可以吗,当然可以,只要记得 eyez和fovy是配对的就OK了,比如可视角度 60 换成 90,神奇的1.1566f就要换成2了。
0 0
- cocos2dx 透视设置分析
- QuartzCore CATransform3D 设置透视效果
- 透视
- 透视
- 透视SOA意义 分析、应用与发展
- 守望先锋外挂(OWG)透视原理分析
- cocos2dx设置剪裁区域
- cocos2dx-屏幕设置
- cocos2dx进度条样式设置
- cocos2dx eclipse 调试设置
- cocos2dx-屏幕设置
- Cocos2dx 竖屏设置
- Cocos2Dx-精灵大小设置
- cocos2dx android横屏竖屏设置
- cocos2dx 设置横竖版
- cocos2dx-屏幕设置
- cocos2dx 对象属性设置
- cocos2dx kazmath 分析
- Protocol Buffer技术详解(C++实例)
- postgresql分类排序后取某一类记录的前n条
- 【慕课笔记】U2 封装 第1节 什么是JAVA中的封装
- awk sed等神奇使用备忘
- maven pom文件详解
- cocos2dx 透视设置分析
- Javascript学习笔记6——BOM
- windows pymol 1.7 安装 存图 背景透明
- 五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程
- 前端编辑器之-Sublime Text3
- android客户端通过servlet对数据库操作(图文)
- JavaScript 调用PHP
- 带你了解树莓派
- Spring定时任务的几种实现