用cocos2d-iphone启用2D投影有什么好理由?

时间:2012-06-14 09:54:48

标签: cocos2d-iphone projection zbuffer depth-testing

在cocos2d-iphone中,默认投影类型为“3D”投影。但您也可以将投影设置为“2D”,如下所示:

[[CCDirector sharedDirector] setProjection:CCDirectorProjection2D];

在幕后3D投影使用透视投影,而2D投影是OpenGL正投影。 The technical details about these two projection modes can be reviewed here我感兴趣的内容。

cocos2d用户的2D投影有哪些优点和缺点?有什么理由可以切换到2D投影?

就我个人而言,我已经使用2D投影来为等距平铺贴图使用深度缓冲。等距瓷砖地图需要这样才能对瓷砖地图上的瓷砖和对象进行正确的z排序。

我还在非tilemap项目中使用了具有深度缓冲的2D投影,以通过vertexZ属性获得完整的z阶控制。该项目使用伪等距显示,其中对象的顶点Z基于其Y坐标。

这意味着我一直只使用2D投影才能使用vertexZ属性,这也需要启用深度缓冲。是否有其他原因可能需要切换到2D投影?

2 个答案:

答案 0 :(得分:3)

在以下情况中,切换到2D投影可以节省生命:

  1. 您创建了一个大的CCRenderTexture

  2. 你使用[... visit]或OpenGL绘图函数绘制一堆东西

  3. 您可以将渲染纹理添加到图层,例如,为了使您在第2点中绘制的内容成为游戏的背景。

  4. 使用3D投影时,纹理将使用垂直和/或水平断层线渲染。例如,http://www.cocos2d-x.org/boards/6/topics/16197用于cocos2d-x,但我也观察到cocos2d-iphone的效果相同,并将投影设置为2D以解决问题。

答案 1 :(得分:1)

我已经切换到2D投影作为解决CClabels(字体文件和基于TTF的标签)的字体渲染问题的唯一方法。这并不总是导致字体问题,但是当其他所有方法都失败时,它已经为我解决了一些问题。