我不知道我在哪里犯错。我在 youtube 上看到了一些演示,它们实时渲染了大约 100 万个粒子(令人惊叹)。但是,当我只想渲染 2500 个小正方形(Texture2D)时,系统就会崩溃——一切都变得缓慢而生涩。在这里,我按原样呈现循环 - 简单的平铺到平铺渲染。网格为 50 x 50,Texture2D Tile 只有 5x5 大 png 图像和 GridNode 3x3。我是 XNA 的新手,所以请不要打我太多... :-)
谁能告诉我,我做错了什么?
非常感谢
for (x = FromCol; x <= ToCol; x++)
{
for (y = FromRow; y <= ToRow; y++)
{
Color aColor = new Color((byte)(x * 20), (byte)(y * 15), (byte)(60 + x));
CoordX = DisplayArea.Left + (int)Math.Round((x - FromCol) * zoomWidth - (restCol * ZoomingX) - indent_x);//
CoordY = DisplayArea.Top + (int)Math.Round((y - FromRow) * zoomHeight - (restRow * ZoomingY) - indent_y);//
dodraw = ((CoordX) > DisplayArea.Left) & (CoordX < (DisplayArea.Right - indent_x)) & ((CoordY) > DisplayArea.Top) & (CoordY < (DisplayArea.Bottom-indent_y));
l = CoordX + indent_x;
t = CoordY + indent_y;
r = l + (int)Math.Round(ColWidth * ZoomingX);
b = t + (int)Math.Round(RowHeight * ZoomingY);
if (l < DisplayArea.Left) l = DisplayArea.Left;
if (t < DisplayArea.Top) t = DisplayArea.Top;
if (r > (DisplayArea.Left + DisplayArea.Width)) r = DisplayArea.Left + DisplayArea.Width;
if (b > DisplayArea.Top + DisplayArea.Height) b = DisplayArea.Top + DisplayArea.Height;
SpriteBatch.Draw(Tile, new Rectangle(l, t, r - l, b - t), aColor);
if (dodraw) SpriteBatch.Draw(GridNode, new Vector2(CoordX, CoordY), Color.White);
}