0

我目前正在 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 )

4

1 回答 1

1

createTexture(宽度:int,高度:int,格式:字符串,optimizeForRenderToTexture:布尔,streamingLevels:int = 0)

我不敢相信我错过了它......数小时的谷歌搜索和反复试验,我错过了一个构造函数参数。

FPS现在恢复正常了!

于 2013-01-24T05:45:43.813 回答