20
2015
08

ogre中通过Hikari使用flash的效率问题

公司项目使用ogre做3d展示,flash做ui,ogre通过Hikari来加载swf。

flash开发速度快,对设计师友好,as很强大,控制逻辑流程完全没问题;而且flash显示中文、音频、视频、动画都很方便。

开发过程中也遇到一些问题,这里不讨论,主要说一下效率问题。

文章游戏UI库中提到了ogre中ui开发的一些方法,也提到了Hikari。通过公司几个项目的实践,Hikari效率确实不高,“但是Hikari最致命的问题的效率太低,它使用的是Flash的ocx,先将动画内容渲染到DC上,然后拷到Texture中,所以很慢,而且慢的是第二步,使得Flash优秀的脏矩形优势无法发挥”。而且我发现将swf设置成透明setTransparent(true)比不透明setTransparent(false)要慢的多,这点在浏览器里感觉不到有差别,不知道具体原因。

如何提高效率?

可以用air透明窗口这篇文章中的解决方法,分成多个窗口,合理使用setTransparent。但是这样一来,就需要分成多个独立的swf,就需要c++来控制流程,swf只是作为资源来被加载,这样就弱化了as的功能,在开发效率上会有很大损失。

我在想,是否能使用air+ogre的方式来实现。air和ogre都使用自己的窗口,将air的窗口置于ogre窗口的上层,air和ogre通过ane来交互。如果可行的话,air无论是在效率还是在功能上都比swf要好的多。ane虽然不容易调试,但是是一劳永逸的(或者可以用socket来通信,不过通信协议比较麻烦)。


« 上一篇下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。