4 个回答

只用过three.js,所以推荐这个.
不清楚你打算用来做什么,总的来说,得看你的运行环境.
ie就不考虑了.
火狐大部分还行,但是动态增加贴图的时候会卡,当然一次加载运行的没问题.
最爽的还是谷歌浏览器
移动端,肯定苹果的系统支持比较好,安卓的就别自虐了,运行在微信里的还好一点,16年4月更新支持了安卓端webgl,但也有部分机型跑不了.

好的条件:
桌面,可以指定运行在谷歌chrome里,那么,用three.js来做3D是不错的,毕竟网页的打开即看,上传代码就更新,是符合当前追求速度展现创意的潮流的.

three.js封装并规范,简化了webgl的过程,短短几行代码就可以让你显示出一个3D的内容出来,不至于用webgl一点一点的去写,一点不对就完全不显示的没头脑让人很沮丧.基本上,你想要的,这个库都有很简单的实现,并具有合适的默认值,然后你可以在这个默认值上去修改和学习.

three.js - Javascript 3D library
three.js的官网,有基本上所有的常见功能的例子代码,很多情况下,参考源代码就可以加到自己的代码里.

有繁多的扩展库,不过沉迷于造轮子的我,很少去接触,追求效率的人可能会比较喜欢.

缺陷:
也即webgl的缺陷,最大的问题:
js是单线程的,一个错误,可能会导致执行线程中断,一个执行有性能不足,会导致绘制顿卡.可以引入worker多线程,但是就得建立一定的通讯和执行机制,会带来架构上的复杂性.
运行于浏览器里,而浏览器对js运行性能是有上限的,我这里chrome最高到系统的25%.
chrome全屏运行,会降低运行效率,本来窗口60满帧运行的页面,全屏后立即在41-50之间波动,不清楚为何会如此,也不知道解决方法,望有知道解决方法的朋友告知一下,这个对我当前比较重要.
js代码是明文,基本上,就当自己是开源工作者好了,呵呵,劳动成果没办法保护得了的.混淆有一定用处,但也会被扒皮.唯一的,就是尽量保证自己走在别人前面.

错觉:
webgl的绘制动作是opengl来执行的,也就是显卡绘制,硬件拥有什么样的绘制性能,webgl就能达到什么样的,唯一的就是js的执行效率短板而已,对于数据运算不多的场景,还是不错的,当然因为基于opengl-es,所以有很多限制和缺失而已.

能够让一种语言做所有事情是伟大的,
但试图让一种语言可以做所有的事情是愚蠢的。

我知道这句话要得罪很多人,但我还是要说:
但是你们这些学js只会做web的人,要做后端我理解,为什么要用nodejs,就不能去学java,go,c等等呢?

你们想做3d,我也理解,为什么就不去用傻瓜式的unity甚至高级点的ureal呢?原生态一点的ogre也好啊,为什么还是想着用js写webgl呢?

v8的性能让js有了一席之地,然而,听我一句,除非有一家公司想再捣腾一个js虚拟机出来,不然这真不是长久之计,v8这玩意儿,厉害是厉害,但不是长久之计啊……

裂墙推荐 PlayCanvas ~ Babylon 和 ThreeJS 都不要再看了

利益相关:目前正在单刷 PlayCanvas 的全部文档汉化 …… 完成度 10% 填坑中 ……

PlayCanvas 开发者资源

目前最稳定的当属Three.js,做小项目推荐;playcanvas是目前唯一带有类unity可视化编辑工具的,并且使用ECS架构,缺点是工具是云端的,天朝的网你懂的;Babylon做游戏功能强大,使用ts开发,源码比较乱,社区不如前两者活跃。

最后推荐shawn0326/zen-3d,简单小巧,目前在测试阶段。

 
posted on 2017-12-31 18:42  SoftBlue  阅读(1587)  评论(0编辑  收藏  举报