gpt4 book ai didi

c# - SpriteBatch.Begin 和 SpriteBatch.End

转载 作者:行者123 更新时间:2023-11-30 21:08:39 25 4
gpt4 key购买 nike

这是一个关于 XNA 中 SpriteBatches 的性能问题。当你想在 XNA 中开始绘图时,你必须使用 spritebatch.Begin()。这就是你指定一堆东西的方式,比如使用的着色器。这会产生一个问题,因为不同的 Sprite 可能使用不同的着色器。我看到一些教程在每个对象的绘制调用中使用了开始和结束。我想这样做,因为我希望每个 Sprite 都能够使用自己的着色器。如何在不引起性能问题的情况下执行此操作?

最佳答案

如果您要让每个 Sprite 使用自己的着色器,那么其中一些 Sprite 可能会共享相同的着色器。确保这些 Sprite 进入同一批处理,以获得尽可能大的性能。

(这可能涉及一些相当丑陋或相当复杂的代码,用于按着色器对对象进行排序,并检测何时更改批处理。您将不得不忍受它。)

SpriteBatch 背后的想法是,它在将 Sprite 发送到 GPU 之前将它们真正地分批在一起。在开始/结束 block 内更改纹理,或开始新的开始/结束 block 将需要新的批处理。

每帧有几百个批处理。

要对此进行更深入的讨论,请参阅 this answer也许this answer在游戏开发网站上。

关于c# - SpriteBatch.Begin 和 SpriteBatch.End,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9551811/

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