我找到了修复我的cocos2d游戏支持iPad视网膜显示的方法。当我在ipad视网膜模拟器中以纵向模式运行游戏时,它无法显示任何内容。但当我将默认设置从kCCDirectorProjection3D更改为kCCDirectorProjection2D时,它开始正常工作。
我想知道kCCDirectorProjection2D / kCCDirectorProjection3D到底做了什么?更改默认设置会导致任何问题吗?
由于 阿比纳夫
答案 0 :(得分:5)
3D投影(默认):
zOrder
属性影响绘制顺序。 zOrder
与addChild:z:
中的z相同。
查看图片,您必须想象您的节点都是在相同深度绘制的,例如直接在背板上绘制。因此它们都以相同的尺寸出现。仅通过以特定顺序呈现每个节点来实现节点的正确重叠。
您仍然可以通过vertexZ
更改节点的真实OpenGL渲染深度,但不建议在3D投影中使用,因为它会产生由于3D投影而导致节点稍微偏离其位置的效果。 / p>
2D投影:
vertexZ
属性的顺序绘制,该属性优先于zOrder
。vertexZ
也会影响节点的大小。如果您确实更改了vertexZ
,则必须在EAGLView中启用深度缓冲才能正确呈现。这通常用于正确渲染等距贴图中的重叠切片。
使用2D投影,您现在可以使用vertexZ
在任何深度移动精灵,而不会偏移节点位置。但是,除非您启用深度缓冲,否则您的节点将显示为更小或更大,具体取决于其vertexZ
属性。
如果您不更改任何节点的vertexZ
属性,则2D Projection应该为3D Projection提供相同的结果。但是,某些节点或操作可能需要3D Projection才能正常工作。
如果您想了解有关OpenGL projection matrices的所有详细信息,请查看此句末尾的链接。
两个预测都具有相同的性能特征。但是,在不使用vertexZ
的情况下启用2D投影通常仅在使用图块地图时才有意义。
长话短说:只要您的应用在2D投影中工作正常并且在彻底测试后没有显示错误,您应该没问题。
但我确定这不是iPad Retina的正确解决方案。据我们所知,直到3月16日,这可能只是在iPad Retina模拟器中出现的问题。而更有可能通过更新retina mode function of CCDirector确定问题。