gpt4 book ai didi

C# 高效的图像绘制和移动

转载 作者:行者123 更新时间:2023-11-30 16:19:47 24 4
gpt4 key购买 nike

所以我正在使用平铺图像制作横向卷轴游戏。在任何给定时间,至少有大约 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 个 ticks 就会重绘 120 张图像。这导致我的程序在我的计算机上达到大约 40% 的 CPU 使用率。

基本上我的问题是:“绘制和移动大量图像 block 的最有效方法是什么”

这是正在绘制的场景图像: An image of the scene

最佳答案

您只是让 CPU 过载,因为图形是在软件模式下呈现的。

使用MonoGame,上手真的很简单,它会为你处理绘图https://github.com/mono/MonoGame并在这里了解一些游戏机制:http://xnagpa.net/xna4rpg.php

MonoGame 同时支持 Direct3D 和 OpenGL,图形是硬件加速的,在渲染简单的 2D 场景时您不会注意到速度变慢。

关于C# 高效的图像绘制和移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14982691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com