Libgdx主要关注Android平台,是用Java编写的,但显然它也可以在浏览器(使用WebGL?)上运行应用程序。Three.js是一个非常令人印象深刻的Javascript 3D库,也同时使用WebGL(或2D画布)进行渲染。
到目前为止我还没有看到这两个库之间的比较,因为它们有不同的关注点,但是我想知道它们之间的区别,一个库可以做什么而另一个库做不了。
Libgdx主要关注Android平台,是用Java编写的,但显然它也可以在浏览器(使用WebGL?)上运行应用程序。Three.js是一个非常令人印象深刻的Javascript 3D库,也同时使用WebGL(或2D画布)进行渲染。
到目前为止我还没有看到这两个库之间的比较,因为它们有不同的关注点,但是我想知道它们之间的区别,一个库可以做什么而另一个库做不了。
我觉得我不太有资格谈论Three.js,但我已经在我的许多项目中使用了libGDX,并知道它在WebGL(浏览器导出)方面的缺点。
首先需要考虑的是你熟悉什么语言,Three.js 使用 JavaScript,而 libGDX 使用 Java。虽然 libGDX 可以导出到 WebGL,但这只是因为它使用了 GWT,实际编程仍需使用 Java。
LibGDX 专注于移动端和桌面应用(正如你所说)。如果你的目标是创建既适用于 Web,也适用于移动端和桌面端的应用,那么应该考虑 libGDX。但是,如果你只想为 Web 编程,那么我会建议你考虑 Three.js,原因稍后会解释。
LibGDX 主要用于游戏开发,所以如果你正在开发一个游戏,可以考虑使用 libGDX,因为它可以轻松地进行 3D 游戏编程(并且可以将其移植到多个平台,不仅限于 Web,还包括移动端和桌面端)。但是,如果你正在开发其他类型的应用,那么 Three.js 可能是更好的选择。
如果你的分发平台将是 Web 版本,我建议你坚持使用 Three.js,因为 libGDX 的 WebGL 导出效果并不好。其中最大的问题之一(虽然可以解决,但很麻烦)是 libGDX 无法阻止浏览器默认键的使用。但是,如果你选择使用 libGDX,请确保查看 this 来解决这个问题(或多或少)。
大多数情况下,如果你的主要平台将是 Web,那么你需要使用专为 Web 开发设计的语言进行编程。如果你使用 Three.js 框架使用 JavaScript 进行编程,代码将更加简洁且运行速度更快。而如果你使用 libGDX,它会将 Java 代码转换为 JavaScript 代码,使其效率低下且臃肿,并且会包含许多无用或可以简化的 JavaScript 代码行。这不是 libGDX(或者说 GWT)本身的问题,而是在自动化编程语言转换时无法避免的问题。例如,使用编程语言 Haxe,如果将 HelloWorld Haxe 编译为 C++,则会包含许多不必要的变量和方法(在 C++ 源代码中),可以直接删除。这种情况也类似。
所以最终取决于你的目标。如果你打算仅使用Web版本,请使用Three.js,否则应考虑使用libGDX。