有一个大的背景图像或许多较小的图像是否更好?

时间:2015-10-02 18:28:28

标签: unity3d

我正在创建一个2D游戏,并想知道是否有一个大的背景图像滚动或从多个较小的图像制作背景更好。

即如果他们不在摄像机视图中,Unity会剔除图像吗?如果是这种情况,单个大图像的性能会降低吗?

3 个答案:

答案 0 :(得分:1)

这一切都归结为在场景中绘制调用和对象。

如果您有超过1个纹理,则表示每个部件需要多个对象。如果纹理都在同一个图集上,那么你就没有绘制调用的问题,但你需要在内存中使用这些对象(尽管你可以拥有更少的对象,然后通过代码在运行时用适当的纹理显示它们)。如果它们不在同一个地图册上,那么你将有更多的绘制调用,因此它会更加密集。

如果你有一个大的纹理,你将有1个绘制调用和1个对象,所以它是最便宜的。

是的,除非它是批次的一部分(静态洗浴或动态批处理),否则Unity会剔除除了frustrum之外的东西。

答案 1 :(得分:1)

如果您有一个具有绘制水平的大纹理,它将在GPU上使用一个四边形进行渲染,并且在光栅化器阶段期间将在硬件上调整顶点的UV坐标/位置。没有发生实际的剔除或性能丢失。但是在小图像的情况下,每个图像将变成四边形(2个三角形),然后变换,然后屏幕三角形将被剔除,但这取决于Unity - 它们如何进行剔除(硬件或软件)。但无论如何,它最好有一个大背景 - 只有4个顶点要转换,只有屏幕宽度*高度像素要渲染

答案 2 :(得分:0)

我建议你使用后者。

因为您可以使用相机视锥体剔除和遮挡剔除。

如果使用图像地图集,即使使用多个bg纹理,也不会增加绘制调用。所以DC呼叫是一样的。

Unity视锥体剔除和遮挡剔除基于对象而不是多边形。因此,如果你制作了一大块游戏对象,那么剔除可能性会大大降低。至于相机视锥,它不会被剔除。

如果将背景纹理分割成小块,当它们离开主摄像机时它们会被剔除。(它们应该是静态的。)

我认为如果没有Unity的剔除功能,你可以管理这种剔除。因为你可以知道背景何时离开相机。