我目前正在 stage3d 中开发 2D 游戏。性能是惊人的——我得到了 60/60 FPS,有很多精灵在屏幕上移动。
我已经开始实现后处理过滤器:我会将所有内容渲染到纹理而不是屏幕上,对其应用着色器,然后将其渲染回屏幕上。
但是我遇到了重大的性能下降 - 仅使用 setRenderToTexture 和最简单的着色器就可以达到 40 FPS。
也许我以错误的方式渲染它,或者问题是我如何渲染最终纹理。
SWF 大小为 980x600,最终纹理为 1024x1024。
这是我对这个后处理的快速而肮脏的实现:https ://gist.github.com/4616886
我使用 Axel 引擎(http://axgl.org),但代码应该对任何人都易于理解。
Gist 显示了我在 Ax.as 中更改的代码(https://github.com/arkeus/Axel/blob/master/src/org/axgl/Ax.as)
我使用了 AxCache.as 中的几个函数(https://github.com/arkeus/Axel/blob/master/src/org/axgl/util/AxCache.as)
这是我使用的 SPRITE_INDEX_BUFFER - ( https://github.com/arkeus/Axel/blob/master/src/org/axgl/AxSprite.as#L518 )