windows-phone-7 – 多长时间调用SpriteBatch.Begin()/.End()?

我在 Windows Phone 7的xna代码的Drawing部分中搜索性能问题,有时会在几秒钟后发生.有一个最佳实践如何/何时调用SpriteBatch.Begin绘制一些东西?应该为每一对精灵(在每个类中绘制玩家时,背景,背景物体……)或者在开始时调用 – 在所有子类中绘制所有内容 –

我在
Windows Phone 7的xna代码的Drawing部分中搜索性能问题,有时会在几秒钟后发生.有一个最佳实践如何/何时调用SpriteBatch.Begin绘制一些东西?应该为每一对精灵(在每个类中绘制玩家时,背景,背景物体……)或者在开始时调用 – >在所有子类中绘制所有内容 – 为了性能更好?

你不应该使用它们,因为Begin()意味着准备设备进行精灵渲染,而End()意味着恢复到之前的状态.这可能会因Begin()中的某些标志而有所不同,这些标志告诉您不需要更改状态,并且可能会使代码复杂化,因为您必须手动设置某些状态.

设备状态更改通常很慢,如果不需要,您应该阻止执行它们,它们也可能会干扰您正在执行的任何操作,因此如果您想要渲染不在SpriteBatch中的内容,您应该调用End(),但是如果您正在渲染精灵你应该为所有精灵打电话一次.

为了防止调用End()来修改上一个sprite中没有显示的状态,你应该调用Flush()而不是End().这会使排队的精灵呈现当前的变换和设备状态,但保持状态不变. End()函数的作用是调用Flush()并重置Begin()设置的特定状态.

作者: dawei

【声明】:永州站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部