首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpriteBatch.Begin和SpriteBatch.End

SpriteBatch.Begin和SpriteBatch.End
EN

Stack Overflow用户
提问于 2012-03-04 10:30:41
回答 1查看 1.5K关注 0票数 2

这是一个关于SpriteBatches在XNA中的性能问题。当您想要开始在XNA中绘图时,您必须使用spritebatch.Begin()。这就是如何指定一堆东西,比如使用的着色器。这会产生问题,因为不同的精灵可能会使用不同的着色器。我看过一些教程,在每个对象的绘制调用中都使用了begin和end。我想这样做,因为我希望每个精灵都能使用自己的着色器。如何才能在不引起性能问题的情况下做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-04 11:41:52

如果您打算让每个精灵使用自己的着色器,那么它们中的一些可能会共享相同的着色器。确保将这些精灵放入同一批处理中,以便获得可能的最高性能。

(这可能涉及一些相当难看或相当复杂的代码,以便按着色器对对象进行排序,并检测何时更改批处理。您将不得不接受这一点。)

SpriteBatch背后的想法是,在将精灵发送到图形处理器之前,它会将它们分批处理在一起。更改begin/end块中的纹理,或开始新的begin/end块将需要新的批处理。

每帧有几百个批次。

有关这一点的更深层次的讨论,请参阅游戏开发站点上的this answerthis answer

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9551811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档