2012-08-14 128 views
10

有人可以解释three.js渲染器之间的区别吗?哪一个更快?哪一个更标准并跨浏览器? svg渲染器和dom渲染器如何工作? 当我在下面的代码中使用webGl而不是canvas渲染器时,我有不同的结果,为什么它应该发生?
cube = new THREE.Mesh(new THREE.CubeGeometry(200, 200, 200, 1, 1, 1, materials), new THREE.MeshFaceMaterial());
canvas和webGL有很大的不同吗?哪一个我应该用于高度浏览的网站?THREE.js渲染器

+1

它取决于你想要绘制的东西......我认为它的名字表明WebGL渲染器使用OpenGL,因此速度更快(因为它使用GPU),而Canvas和SVG更弱因为他们计算3d-> 2d transforamtions并不是所有的对象都支持... – EliSherer 2012-08-14 14:05:53

+0

我想绘制一些复杂的3D素材,所以网络G1可以更有用,但有很多浏览器不支持webGl。 – Erfan 2012-08-15 07:39:13

回答

16

如果您的目标是创建3D图形,您确实想创建仅支持WebGL的应用程序。其他Three.JS渲染器更像是黑客和概念证明,而不是可以为您提供真实3D的东西。如果您的目标不是制作令人惊叹的图形,那么您可以简单地使用静态PNG图像,GIF动画或YouTube剪辑,并具有更好的向后兼容性。 <canvas>渲染后端仅用于非常非常简单的图形(如没有纹理的旋转立方体)并且具有<canvas>作为后备在许多情况下不起作用。

例如,https://tinkercad.com/home/是仅WebGL的web应用程序。他们在webshaped.fi会议上的估计是,大约50%的网站受众可以访问WebGL内容。这可能听起来很低,但它仍然远高于在移动设备或桌面上安装应用程序的用户,因此使用WebGL部署3D的会话率要高于其他部署机制。

另见http://webglstats.com/

WebGL是也是一个面向未来的技术 - 它不会消失。目前,你的主要目标是桌面,但在移动适应成为现实之前,这只是时间的问题,2 - 3年。

+0

Excellent.Thanks,所以我将使用Web Gl,但是你知道什么是SVG Renderer和DOM Renderer吗? – Erfan 2012-08-15 07:30:36

+1

它们是使用HTML元素呈现概念的证明,并且不会产生您希望在现实生活中使用的呈现结果。我预计它们将在未来从Three.js核心中退出。 – 2012-08-15 07:34:30

2

结合WebGLRenderer作为其未来的证明和IMP是大多数THREE.js方法的作品。

例如, ParticleSystem在CanvasRenderer中不起作用