非OpenGL / XNA环境中的Sprite批处理

时间:2013-11-19 19:18:10

标签: c# visual-studio sprite batching

我一直在使用Visual C#中的游戏(不是最好的平台,我知道),并且,正如预期的那样,它已经开始运行得相当缓慢。运行一些测试表明,主要用于绘制图像。我被告知Sprite Batching是一个很好的修复方法。

问题是,我在sprite批处理中找不到任何不特定于XNA或OpenGL的内容。我对这个过程几乎一无所知,我希望得到一些关于是否可以使用Visual Studio的Visual C#实现这样的信息的信息,以及(如果有的话)我可以去哪里了解它。如果没有,是否还有其他有用的方法来加快这一过程?谢谢!

1 个答案:

答案 0 :(得分:0)

它基本上归结为将调用保存在状态切换(纹理,填充率)和绘制调用(将发送绘图调用50,000次并不像发送单个绘制调用那样高效,令人惊讶的足够)。在调用等效的SpriteBatch.Draw(...)时,您将不得不检查以下内容:

  • 批次的内部“最大尺寸”
  • 如果纹理切换,请冲洗缓冲区(即绘制所有内容)
  • 如果已调用SpriteBatch.End(...)(您已完成;刷新缓冲区并绘制)

如果您仍然遇到问题,请随时查看MonoGame的implementation

编辑:发现了一个很棒的gamedev question