gpt4 book ai didi

windows-phone-7 - 多久调用一次 SpriteBatch.Begin()/.End()?

转载 作者:行者123 更新时间:2023-12-04 19:17:29 25 4
gpt4 key购买 nike

我正在为 windows phone 7 的 xna 代码的绘图部分搜索性能问题,该问题有时会在几秒钟后出现。是否有最佳实践如何/何时调用 SpriteBatch.Begin 来绘制一些东西?应该为每对 Sprite 调用它(在每个类中,当它绘制玩家、背景、背景对象等时)还是在开始时调用 -> 绘制所有子类中的所有内容 - 对性能更好?

最佳答案

您不应该在不必要的情况下使用它们,因为 Begin() 意味着为 Sprite 渲染准备设备,而 End() 意味着恢复到其先前的状态。这可能会因 Begin() 中的一些标志告诉您不希望状态更改而有所不同,并且可能会使您的代码复杂化,因为您必须手动设置一些状态。

设备状态更改通常很慢,如果不需要,您应该避免这样做,它们也可能会干扰您正在做的任何事情,因此如果您想渲染不在 SpriteBatch 中的内容,您应该调用 End(),但如果您正在渲染 Sprite 你应该为所有 Sprite 调用一次。

为了防止调用 End() 来修改未显示在前一个 Sprite 上的状态,您应该调用 Flush() 而不是 End()。这将使用当前转换和设备状态呈现排队的 Sprite ,但保持状态不变。 End() 函数所做的是调用 Flush() 并重置由 Begin() 设置的特定状态。

关于windows-phone-7 - 多久调用一次 SpriteBatch.Begin()/.End()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7449373/

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