守望者--AIR技术交流

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: ANE FlasCC 炼金术
查看: 2389|回复: 0
打印 上一主题 下一主题

[技术知识] Web3D Porting - Emscripten VS FlasCC

[复制链接]
  • TA的每日心情
    擦汗
    2018-4-10 15:18
  • 签到天数: 447 天

    [LV.9]以坛为家II

    1742

    主题

    2094

    帖子

    13万

    积分

    超级版主

    Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

    威望
    562
    贡献
    29
    金币
    52903
    钢镚
    1422

    开源英雄守望者

    跳转到指定楼层
    楼主
    发表于 2014-12-31 18:37:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    前段时间有在搞一些C++到Web3D化相关的一些东西,最近也看到了emscripten,抛开成熟度的话不说,单就技术来说也是挺不错的。其实现方法实际上跟FlasCC差不多,这里对其作一简单的对比总结。

    1. 流程与环境配置

    Emscripten的主要流程为:


    • C/C++ -> LLVM -> Emscripten -> JavaScript/HTML

    其编译环境配置相对来说较为简单,可以见这里有比较详细的介绍。本人参考在VS里边配置了一下但是没有成功,不过不使用VS的话倒也没什么影响,简单写一个bat也可以完成编译的流程。

    FlasCC的主要流程为:


    • C/C++ -> GCC -> LLVM -> FlasCC -> .abc -> SWF

    FlasCC的编译环境相对来说就比较高了,其它的如java,python等都不说了,除此外主要就是需要Cygwin的环境(这空间很可观,跟NDK环境配置有得一拼);还有一点就是FlasCC的64位环境要求,否则32位下的内存搞不定,囧。。。

    整体来说FlasCC要求的编译环境比Emscripten要高不少。


    2. 编译效率与性能
    • 内存占用:

    Emscripten在编译过程中并无太多的内存消耗;FlasCC编译过程中出现上G内存占用情况很常见(要不人要64位系统干嘛呢。。)
    • 编译时间:

    相对来说Emscripten编译过程要比FlasCC快不少,经过对几个工程的编译实验发现,Emscripten能比FlasCC编译要快上两三倍甚至更多。


    3. 移植中的问题将传统的C++程序向Web移植的过程中主要有这几个问题需要特别考虑:
    • Third-party libs

    如果C/C++工程中使用了第三方的库,那这个没有办法,必须要有这些库的源代码或来编译或者有使用对应工程链编译好的可链接文件,否则无论Emscripten或FlasCC都无能为力;
    • File System

    由于安全性的原因,web系统对于文件的处理采用的策略也较为特殊。这一点上,两者的处理方式也不太相同。Emscripten中有两种处理文件系统的方法(这里),一种是直接将要使用的文件以preload的方法在编译时嵌入,这样会生成一个跟html对应的.data文件在文件操作时直接使用,不过它用增加html的加载时间;另外一种方法就是把文件放到服务器上以http的形式传输过来使用;FlasCC中则统一Virtual File System的方式实现,即使是本地的文件其同样会以一种模拟的http方式加载到当前web应用端使用。在编译过程中,FlasCC全使用sdk中一个genfs的工具把使用到的文件进行VFS的预处理操作(比如压缩等,或文件太大还会被分割),然后这些个信息会生成到一个manifest.as文件中并在生成swf时告诉如何来远程加载文件。相对来说,这一块来说FlasCC里边的方式做得更好一些。
    • Rendering API

    如果是3D图形渲染相关的工程来移植的话那么渲染API也是一个很需要考虑的问题。Emscriptn使用WebGL来实现渲染,因而在原始C/C++工程中,只要渲染相关操作使用的是WebGL(或OGLes)相关的接口,直接转都没有问题;FlasCC转换为swf之后对3D渲染的支持使用的是Stage3D,因而渲染接口需要进行一层再封装,别外,还在就是其它语言格式的Shader也同样需要转换到Stage3D的Agal格式,这个过程的工作量也比较大。

    这里通过对之前的一个OGL工程进行了移植测试,emscripten可以很快搞定,但是FlasCC嘛。。。



    当然,Emscripten和FlasCC从移植操作性的角度上来说各有优劣,但是单纯对它们做对比可能并不太合适,毕竟两个相当于Web3D化的不同方向:一个基于JS的WebGL,一个是运行于Flash player上的swf。如果在项目的需求中把移植的方向给确定,比如目标就只要flash,那么这时不管emscripten有多好多快也没什么作用。


    本文来自:http://blog.csdn.net/bugrunner/article/details/8925007


    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
    收藏收藏 分享分享 支持支持 反对反对 微信
    守望者AIR技术交流社区(www.airmyth.com)
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    
    关闭

    站长推荐上一条 /4 下一条

    QQ|手机版|Archiver|网站地图|小黑屋|守望者 ( 京ICP备14061876号

    GMT+8, 2026-1-25 07:57 , Processed in 0.056106 second(s), 31 queries .

    守望者AIR

    守望者AIR技术交流社区

    本站成立于 2014年12月31日

    快速回复 返回顶部 返回列表