gpt4 book ai didi

actionscript-3 - 如何在不使用 BitmapData.draw() 的情况下快速旋转构成 BitmapData 的像素?

转载 作者:行者123 更新时间:2023-12-04 06:27:26 24 4
gpt4 key购买 nike

我一直在使用 BitmapData.copyPixels()在 Canvas 上绘制图形(位图)。

我需要在不使用 draw() 的情况下旋转生成的图形因为它慢得多。

如何旋转目标图形?我假设可能有一个我可以使用的公式或库,它们将首先根据原点(点)和弧度重新组织构成图形的像素。

我很确定我没有能力创建这样的逻辑,所以如果有任何已知的库可以做到这一点,那就太棒了。

我想实现类似于 XNA 的 SpriteBatch.Draw() 的东西方法,它接受 rotation 作为它的第 5 个参数。

最佳答案

copyPixels 基本上只是将内存块从一个 BitmapData 对象复制到另一个对象。转换像素(例如缩放、旋转、剪切等)方式占用更多 CPU。事情就是这样,没有什么神奇的方法可以改变它。即使您会找到另一个执行这些操作的库,我怀疑它是否会比 native 实现更快,因为它必须在纯 ActionScript 中实现,并且不能像 native 命令那样进行优化。

如果您正在渲染场景(例如,将 Sprite 复制到更大的 BitmapData Canvas )并且您必须对大量 Sprite 执行大量旋转,那么最好的方法是渲染将离散数量的渲染步骤添加到 BitmapData,然后使用 copyPixels 复制最接近所需旋转的旋转。这样您就可以在初始化时仅使用一次慢速 draw,然后从那里开始使用快速的 copyPixels

还有另一种绘制旋转位图的方法,通过使用新的 3D API,您可以简单地渲染带纹理的四边形,您可以旋转、缩放和移动任何程度而不会降低性能。这将是最接近 XNA 的 draw 实现,但它需要您完全转储 blitting(绘制到 Bitmap)。

总的来说,我会选择最简单的方法,只使用 BitmapData.draw。创建一个测试用例,绘制您估计的最大并发 Sprite 并对其进行分析,以查看性能影响是否大到值得实现任何提到的解决方法。

关于actionscript-3 - 如何在不使用 BitmapData.draw() 的情况下快速旋转构成 BitmapData 的像素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8664420/

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