【问题标题】:What are good reasons to enable 2D projection with cocos2d-iphone?使用 cocos2d-iphone 启用 2D 投影的充分理由是什么?
【发布时间】:2012-06-17 08:13:14
【问题描述】:

在 cocos2d-iphone 中默认的投影类型是“3D”投影。但您也可以像这样将投影设置为“2D”:

[[CCDirector sharedDirector] setProjection:CCDirectorProjection2D];

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

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

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

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

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

【问题讨论】:

  • 感谢您提出这个问题。

标签: cocos2d-iphone projection zbuffer depth-testing


【解决方案1】:

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

  1. 你创建了一个大的 CCRenderTexture

  2. 你在上面画了一堆东西,要么使用 [... visit] 要么使用 OpenGL 绘图函数

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-15
      • 1970-01-01
      • 1970-01-01
      • 2011-06-08
      • 1970-01-01
      相关资源
      最近更新 更多