我将通过覆盖我的屏幕上的每个像素的阵列喜欢迭代。即:

        for (int y = 598; y > 0; y--)
        {
            for (int x = 798; x > 0; x--)
            {
                if (grains[x][y])
                {
                    spriteBatch.Draw(Grain, new Vector2(x,y), Color.White);
                }
            }
        }

...我的质地是绘制到屏幕当阵列值是真1x1像素图像。它运行体面 - 但肯定是有滞后的更大的屏幕我盖。有没有更好的方法来完成我想达到什么目的?

有帮助吗?

解决方案

代替使用X X Y个体精灵,创建单个图像,并且适当地设置的像素。然后,只需使整个图像作为在单个子画面的纹理。

在交错数组是最有可能的不可以的问题 - 而近半数百万精灵

其他提示

的问题是,你是很多的绘制方法内的每个帧花费CPU时间。你的游戏例证Draw方法将总是无论是在固定的时间或没有尽可能多地调用。鉴于这种情况,你总是要确保你花尽可能少的时间有可能,这意味着你要放置的大部分工作在GPU上。

嵌套for循环以及所有到spriteBatch.Draw呼叫要使用慢得多的CPU,特别是当你的循环变得越来越大,该装置延迟绘制。

如果你想要做的每像素计算,每绘图,每一帧,然后去它的最好办法是将GPU上的工作,并使用像素着色器。您可以通过创建一个纹理你想要的大小,并传递一个数组来保存你的“打开或关闭”的信息,其他的方法来完成相同的目标之间的着色器完成你自己的问题。

如何:应用一个像素着色以精灵

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top