Dangle(Doric Almost Native Graphics Layer Engine),顾名思义,是一个旨在为 Doric 提供接近原生渲染性能的图形引擎,为了最大程度拥抱 JavaScript 的生态,目前采用的是 WebGL 2.0 的协议标准。
Dangle 目前支持了一系列的使用 JavaScript 函数库或者 API 并基于 WebGL 2.0 协议标准,能够在网页浏览器中创建和展示动画的三维计算机图形引擎如Three.js,Stardust.js & D3.js,PlayCanvas,Babylon.js,regl等。其中 Three.js 支持度已经相对完善,其余的引擎后续会逐步完善支持。
依托于 Doric 跨平台框架,Dangle 可以在 Android 和 iOS 双端呈现出一致的三维视觉交互效果。Android 端 Dangle 在TextureView上进行绘制,而在 iOS 端则是在 UIView 的CAEAGLLayer上进行渲染。
即使不使用任何现有的能够在网页浏览器中创建和展示动画的三维计算机图形引擎,Dangle 也可以支持纯粹的 WebGL 函数调用,具体的示例可以参考示例展示小结之中的 MDN WebGL。
遵从 Doric 提供的 Resource 体系,可以高效管理和动态加载较大或者较为复杂的 3D 模型。
目前由于 iOS 会逐步废弃 OpenGL ES,所以后续的在 iOS 侧的渲染方式会从 CAEAGLLayer 逐步演变为 MetalAngle 的 MGLLayer,但目前由于 MetalAngle 对于 OpenGL ES 3.0 的转换只完成了 90%左右,因此暂时还无法做到全部支持,具体的代码可参考本项目的 feature/metal_angle 分支。
支持 Doric Qt
Qt 作为业界主流的 PC 业务客户端开发框架,Dangle 未来会考虑支持在 Windows 平台以 Direct X 的方式支持渲染,当然依然需要依托于 Angle 项目的 OpenGL 到 D3D 的转换。
物理引擎目前如ammo.js,Oimo.js等,还无法以WebAssembly的形态运行,后续会考虑在Doric侧支持WebAssembly的装载从而使Dangle中可以高效使用这部分的引擎能力。