4

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

[[CCDirector sharedDirector] setProjection:CCDirectorProjection2D];

在幕后,3D 投影使用透视投影,而 2D 投影是 OpenGL 正交投影。这两种投影模式的技术细节可以在这里查看,这不是我感兴趣的。

二维投影对于 cocos2d 用户有什么好处和坏处?切换到 2D 投影的充分理由是什么?

就我个人而言,我使用 2D 投影能够将深度缓冲用于等距平铺地图。等距平铺地图需要此功能才能正确在平铺地图上对平铺和对象进行 z 排序。

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

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

4

2 回答 2

3

在以下情况下,切换到 2D 投影可以挽救生命:

  1. 你创建了一个大的 CCRenderTexture

  2. 您可以使用 [... 访问] 或 OpenGL 绘图函数在其上绘制一堆东西

  3. 您将渲染纹理添加到您的图层,例如,为了将您在第 2 点中绘制的东西用作游戏的背景。

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

于 2012-11-23T06:33:26.077 回答
1

I have switched to 2D projection as the only means to resolve font rendering issues with CClabels, both font file and TTF-based labels. This is not always the cause of a font issue, but it has resolved some problems for me when all else failed.

于 2012-06-17T14:18:20.410 回答