小编Cod*_*olf的帖子

C#或C++游戏:许多16个彩色图像加载到RAM中.高效的解决方案?

我正处于制作格斗游戏的计划阶段,并且不确定如何处理与记忆有关的一个问题.

背景信息:
- 仍在争论是否使用C#(XNA)或C++.在我们探索如何用两种语言解决这个问题之前,我们不想承诺.
- 如果可能的话,使用最大256MB的RAM会很棒.
- 一次出现两个角色,这些角色只能在战斗中改变.战斗之间有时间加载/释放内存,但游戏需要在战斗期间以每秒60帧的速度运行.每帧为16.67ms
- 每个字符的图像总数低至数百.每幅图像大约为200x400像素.在任何给定时刻,每个角色只能显示一个图像.

未压缩,每张图像大约需要300kb的计算量; 整个角色高达100MB.考虑到其他一些资源也需要内存,这推动得太接近256MB的限制.

由于每个图像可以制作总共16种颜色.从理论上讲,如果我可以利用这个,我应该可以使用1/8的空间.我环顾四周,但没有找到任何关于调色板图像的原生支持.(使用较少的位存储每个像素,每个像素映射到32位RGBa颜色)

我们尝试使用DXT压缩,但压缩工件非常明显.

我正在考虑使用每像素4位(以及一些额外的调色板信息)制作我自己的文件格式,在战斗之前将这种新格式的所有图像加载到RAM中,然后在绘制任何特定图像时,仅将该图像解压缩为原始图像所以它可以正确呈现.我不知道每帧执行如此多的赋值操作(每个字符的appx 200x400 = 160k)是否真实.这对我来说听起来很不好看.

有没有人对我的解决方案听起来是否合理以及是否有更好的解决方案有建议?

非常感谢!

(我还尝试使用只有1个通道的图像,然后使用着色器执行一系列if语句将各种值转换为其他颜色.不幸的是,着色器的代码行太多了.它也相当hacky并且不能很好地扩展.)

c# c++ memory-management image-processing

10
推荐指数
1
解决办法
702
查看次数

标签 统计

c# ×1

c++ ×1

image-processing ×1

memory-management ×1