- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近开始对 ASM 进行一些调查,并在线玩了一些演示。我必须说 Unreal 演示非常令人印象深刻......我已经使用 Three 开发了一个应用程序好几个月了。它在快速机器上运行良好,但在低端机器上它往往会挣扎。当我在我的低端机器上运行虚幻演示时,演示就像做梦一样。我的问题是,ASM 与三可以有什么地方 - 它可以大大加速引擎吗?是否值得研究或开发一种利用两者并基于浏览器在它们之间切换的解决方案?另外,三号 future 有没有利用它的计划?
我来自 C++ 背景,对开发某些东西的前景非常感兴趣。但与此同时,这意味着必须重新学习这门语言,甚至更大的问题可能是要花费大量时间才能使其达到可用点。
你怎么看?
最佳答案
这是我的意见:
首先,asm.js 并不是真的要手工编写。虽然我说它当然可以编写,因为它有一个验证器。虚幻演示是用 emscripten 编译成 asm.js 的东西。它也不需要与被编译的代码之外的其他代码交互。因此它生成高度优化的代码,因为虚幻演示已经是高度优化的 C++ 代码,它由编译器优化,然后通过 asm.js 进行另一轮优化。
其次,asm.js 实际上只有 firefox 支持。尽管所有其他浏览器都可以执行它,但在大多数情况下它仍然会导致性能下降。这个惩罚是如果你比较 asm.js 代码与普通 javascript 代码一样。只需搜索 jsperf.com对于这方面的例子。
好的,这是关于 asm.js 的一些通用指南。现在让我们谈谈 Three.js。
首先,因为 THREE.js 必须与用户代码交互,所以编写 asm.js 库并不容易,因为它有很多限制(没有对象)。
其次,对于 asm.js 强大的计算,Three.js 不会在性能上获得很多性能。但会从浏览器的 future 更新中获得更多性能。 (例如,在 chrome 中创建 typedarrays 现在是 THREE.js 中的一个痛点,即将到来。V8 issue)
第三,asm.js 中的代码需要管理自己的内存。这意味着 THREE.js 必须想办法让大型应用程序在有限的内存下工作。或者让每个应用程序都非常需要内存。
第四,将虚幻演示与three.js进行比较有点不公平,因为three.js试图让每个人都可以编写3D应用程序,而虚幻引擎是高度优化的3D游戏引擎。
正如您所注意到的,我主要反对three.js 中的asm.js。但这是因为现在说最好的方法是什么还为时过早。 asm.js 很有可能最终会在 Three.js 中占有一席之地,但更多的是作为仅渲染器的有限用途。但就目前而言,围绕 asm.js 仍有太多 Unresolved 问题。
但是如果你想使用 asm.js 并使用 C++,那么我推荐 emscripten用于构建虚幻演示。
这当然是我的意见。但我认为它在某种程度上代表了@Mr.doob 和@WestLangley 的想法。很抱歉这篇长文章。
关于three.js - 三和ASMjs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18427810/
我是一名优秀的程序员,十分优秀!