2012-05-30 45 views
5

Libgdx主要关注Android,用java编写,但显然它可以在浏览器上运行应用程序(webGL?)。 Three.js是一个非常令人印象深刻的JavaScript 3D库,它使用WebGL(或2d canvas)以及渲染。 到目前为止,我还没有看到这两者之间的任何比较,因为他们有不同的侧重点,但我想知道它们之间的区别,一个图书馆可以做什么,另一个不能。three.js vs libgdx用于3D网页开发

+0

这样的问题很难以合理的方式回答。通常你会得到的答案会严重偏向一个图书馆或另一个图书馆,除非你缩小了一点。如果你想知道对特定功能的支持,请列出它们,否则你可能和我们任何一个人一样能够对这两者进行重点比较。 – Toji

+0

我很好奇的是,如果他们都是众所周知的,适合webGl开发,为什么你不能在谷歌的同一页面找到'libgdx'和'three.js'。 – olanod

+2

因为libgdx最初是作为桌面/ Android框架开始的,并且在几个月前添加了纯Javascript/WebGL支持(游戏已经部署到例如Facebook或Google Chrome商店)。目标受众可能会因语言不同(Java语言在libgdx中,Javascript/Coffescript在three.js中)和平台选择(大多数人或者专注于Android或网页游戏,但通常不是两者,特别是业余爱好者) 。 – badlogic

回答

3

我不认为我有资格谈论Three.js,但是我已经使用了libGDX来处理我的许多项目,并且在WebGL(浏览器导出)方面知道它的缺点。

  1. 要考虑的第一个因素是您习惯的语言,Three.js使用JavaScript,而libGDX使用Java。尽管libGDX导出到WebGL,但仅仅因为它使用GWT,您仍然使用Java进行编码。

  2. LibGDX是专门的(如你所说)在移动和(在某种程度上)桌面应用程序。如果你的目标是创造一些在网络上以及移动和桌面上运行的东西,那么应该考虑libGDX。然而,如果你只想为网络编程,那么我会考虑只是在做Three.js,我会稍后解释。

  3. LibGDX主要用于游戏开发,所以如果你正在制作的应用程序是一款游戏,那么你可以考虑libGDX,因为它使得3D游戏编程变得简单易行(你可以将它移植到多个平台,不仅仅是网络,而是移动和桌面)。但是如果你做了其他的事情,Three.js可能是更好的选择。

  4. 如果您的分发平台将成为您的网页版本,我会建议坚持使用Three.js,因为libGDX对于WebGL导出不太好。最大的问题之一(这是可以解决的,但需要付出一定的代价)是libGDX不会阻止使用默认浏览器密钥。但是,如果您选择使用libGDX,请确保您查看this以解决该问题(或多或少)。

  5. 大多数情况下,如果您的主要平台将是网络,您需要使用适用于Web开发的语言进行编程。如果使用Three.js框架在JavaScript中编程,代码将更干净,运行速度更快。同时,如果您使用libGDX,它实质上会将Java代码转换为JavaScript代码,从而导致代码效率低下且体积庞大,并且会包含许多无用或简化的JavaScript代码。这不是libGDX(或GWT)本身的问题,而只是在自动化编程语言转换时无法避免的问题。举个例子,使用编程语言HaXe,如果你编译了一个HaXe到C++,它包含了一堆你可以摆脱的不必要的变量和方法(在C++源代码中)。在这种情况下也一样。

所以最终它取决于你的目标。如果您打算坚持只使用Web版本使用Three.js,否则应考虑libGDX。