C# 等轴测发动机中的地板绘制方法

C# 等轴测发动机中的地板绘制方法,c#,game-engine,tiles-game,C#,Game Engine,Tiles Game,我正在为RTS游戏制作等轴测2D瓷砖引擎。我有两种方法可以画地板。一个选项是一个大图像(例如8000px x 8000px约10MB),第二个选项是仅在可见区域逐块绘制图像 我的问题是什么(对于性能)更好?性能方面和内存方面,平铺方法更好 内存方面:如果您可以使用一个单独的工具来保存需要渲染的每个瓷砖的纹理,那么使用的内存量将大大减少,而不是为要渲染多次的瓷砖重新定义纹理。此外,在每个纹理上都有一个名为“pitch”的属性。该属性告诉我们使用的内存比图像实际需要的内存多多少。什么?为什么我的程序

我正在为RTS游戏制作等轴测2D瓷砖引擎。我有两种方法可以画地板。一个选项是一个大图像(例如8000px x 8000px约10MB),第二个选项是仅在可见区域逐块绘制图像


我的问题是什么(对于性能)更好?

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

内存方面:如果您可以使用一个单独的工具来保存需要渲染的每个瓷砖的纹理,那么使用的内存量将大大减少,而不是为要渲染多次的瓷砖重新定义纹理。此外,在每个纹理上都有一个名为“pitch”的属性。该属性告诉我们使用的内存比图像实际需要的内存多多少。什么?为什么我的程序会这样做?回到过去的好日子,当本·克诺比仍然被称为欧比·万·克诺比时,纹理占据了他们本该拥有的记忆。但现在,随着硬件加速,GPU在纹理中添加了一些填充,使其与边界对齐,从而可以更快地处理。这是您可以使用精灵表减少的内存

从性能的角度来看:无论何时在屏幕上绘制常规精灵,图形硬件都需要三条主要信息:1)要从中渲染的纹理。2) 要从该纹理的哪个部分进行渲染。3) 在屏幕上要渲染到的位置。对要渲染的每个对象重复此操作。对于spritesheet,它只传递数据一次,这大大提高了性能,因为将数据从CPU传递到GPU(反之亦然)非常慢


事实上,我不同意这两条评论。当您的程序成熟时,更改此口径将很困难。

您尝试过什么?关于性能的答案将因实施情况而大不相同。正如帕戈戈梅兹所暗示的,首先让它发挥作用,然后让它发挥更好的作用。若您将背景绘图代码封装在整洁的类中,那个么您将能够在以后替换它以获得更好的版本,而不会弄乱其余的代码。在创建新项目时,计划良好的类比速度更重要,所以现在只需绘制实体位图,并将重点放在重要部分。