有谁知道kCCDirectorProjection2D的作用?

Abh*_*nay 2 cocos2d-iphone ipad retina-display

我找到了一个修复,以支持我的cocos2d游戏的iPad视网膜显示.当我在ipad视网膜模拟器中以纵向模式运行游戏时,它无法显示任何内容.但当我将默认设置从kCCDirectorProjection3D更改为kCCDirectorProjection2D时,它开始正常工作.

我想知道kCCDirectorProjection2D/kCCDirectorProjection3D到底做了什么?更改默认设置会导致任何问题吗?

谢谢阿比纳夫

Lea*_*s2D 5

3D投影(默认):

  • 使用具有固定摄像机位置和视点的OpenGL透视投影
  • 节点按照添加到节点层次结构的顺序绘制.您可以通过zOrder酒店影响订单.zOrder与z in相同addChild:z:.

在此输入图像描述

看一下图片,你必须想象你的节点都是在相同的深度绘制的,例如直接在背板上绘制.因此它们都以相同的尺寸出现.仅通过以特定顺序呈现每个节点来实现节点的正确重叠.

您仍然可以通过改变节点的真实OpenGL渲染深度,vertexZ但不建议在3D投影中使用,因为它会产生由于3D投影而导致节点稍微偏离其位置的效果.

2D投影:

  • 使用OpenGL正交投影
  • 节点按vertexZ属性顺序绘制,优先于zOrder.
  • 更改vertexZ也会影响节点的大小.如果您进行了更改vertexZ,则必须在EAGLView中启用深度缓冲才能正确渲染.这通常用于正确渲染等距贴图中的重叠切片.
  • 您不能将2D投影与cocos3d一起使用.
  • CCCamera的表现会有所不同.
  • 3D,网格和相机动作(翻页,波浪等)在2D投影中无法正常工作或表现不同,甚至可能会重置为3D投影.

在此输入图像描述

使用2D投影,您现在可以使用任何深度移动精灵,vertexZ而不会偏移节点位置.但是,除非启用深度缓冲,否则您的节点将根据其vertexZ属性显示为更小或更大.

如果不更改vertexZ任何节点的属性,2D Projection应该为3D Projection提供相同的结果.但是,某些节点或操作可能需要3D Projection才能正常工作.

如果您想了解有关OpenGL投影矩阵的所有细节,请查看该句末尾的链接.

两个预测都具有相同的性能特征.但是,在不使用时启用2D投影vertexZ通常只在使用tilemaps时才有意义.

长话短说:只要您的应用程序在2D投影中工作正常并且在彻底测试后没有显示错误,您应该没问题.

但我确定这不是iPad Retina的正确解决方案.据我们所知,直到3月16日,这可能只是在iPad Retina模拟器中出现的问题.并且更有可能通过更新CCDirector视网膜模式功能来修复该问题.