+-

因此,我正在使用平铺图像制作侧面滚动游戏.在任何给定时间,使用此代码至少绘制了约120张图像:
for (int mapX = 0; mapX < mapWidth; mapX++)
{
for (int mapY = 0; mapY < mapHeight; mapY++)
{
try
{
Block block = mapList[mapY, mapX];
if (block == null)
continue;
if (block.nullspace)
continue;
block.Interact();
int drawX = sceneX + block.blockX;
int drawY = sceneY + block.blockY;
if (drawX + block.blockWidth < 0)
continue;
else if (drawX > this.ClientSize.Width + 50)
break;
if (drawY + block.blockHeight < 0)
continue;
else if (drawY > this.ClientSize.Height)
break;
e.Graphics.DrawImage(block.blockImage, drawX, drawY, block.blockWidth, block.blockHeight);
if (block.overlayImage != null && !block.dontDraw)
e.Graphics.DrawImage(block.overlayImage, sceneX + block.blockX, sceneY + block.blockY, block.blockWidth, block.blockHeight);
}
catch (Exception)
{
}
}
}
但是,每当需要移动图像时,都会运行此代码.例如,要使整个场景移动,我有一个间隔为10(以保持运动平稳)的计时器,它将使sceneX递减(因为我将场景向左移动),然后重新绘制整个场景.因此,从本质上讲,每10个滴答声就会重新绘制约120张图像.这导致我的程序在计算机上达到约40%的CPU使用率.
基本上我的问题是:“绘制和移动大量图像图块的最有效方法是什么?”
这是正在绘制的场景的图像:
最佳答案
您只是在使CPU过载,因为图形是在软件模式下渲染的.
使用MonoGame,上手起来非常简单,它可以为您处理图形https://github.com/mono/MonoGame,并在此处了解一些游戏机制:http://xnagpa.net/xna4rpg.php
MonoGame支持Direct3D和OpenGL,图形是硬件加速的,渲染简单的2D场景时您不会注意到速度变慢.
点击查看更多相关文章
转载注明原文:C#高效的图像绘制和移动 - 乐贴网