等距引擎中的楼层绘制方法

时间:2014-01-05 01:13:25

标签: c# game-engine tiles-game

我在RTS游戏的等距2D平铺工程上工作。我有两种方法可以画地板。一个选项是一个大图像(例如8000px x 8000px有大约10MB),第二个选项是仅在可见区域中逐个图块绘制图像。

我的任务是什么更好(表现)?

1 个答案:

答案 0 :(得分:1)

在性能方面和内存方面,平铺方法更好。

记忆:如果你可以用一个spritesheet来保存你需要渲染的每个图块的纹理,那么使用的内存量会大大减少 - 而不是重新定义你想要的图块的纹理渲染不止一次。此外,在每个纹理上都有一个名为“pitch”的属性。此属性告诉我们使用的内存比实际需要的内存多少。什么?为什么我的程序会这样做?回到过去的好时光,当Ben Kenobi仍然被称为Obi Wan Kenobi时,纹理占据了他们应该记忆的记忆。但是现在,通过硬件加速,GPU为纹理添加了一些填充,使其与可以更快处理的边界对齐。这是使用spritesheet可以减少的内存。

从性能角度来看:每当您在屏幕上绘制常规精灵时,图形硬件需要三个主要信息:1)您想要渲染的纹理。 2)您要渲染的纹理的哪个部分。 3)屏幕上要渲染的位置。对要渲染的每个对象重复此操作。使用spritesheet,它只传递一次数据 - 性能大幅提升,因为将数据从CPU传递到GPU(反之亦然)非常慢

实际上,我不同意这两条评论。当你的程序成熟时,改变这种能力是很困难的。