我认为我不太适合谈论Three.js,但是我已经在我的许多项目中使用了libGDX,并且知道它在WebGL (浏览器导出)方面的缺点。
- 首先要考虑的是您所使用的语言,Three.js使用JavaScript,libGDX使用Java。虽然libGDX向WebGL导出,但这仅仅是因为它使用了GWT,您仍然可以使用Java进行编码。
- LibGDX是专门用于移动和(在某种程度上)桌面应用程序的(正如您所说的)。如果您的目标是创建一些在网络以及移动和桌面上工作的东西,那么应该考虑使用libGDX。但是,如果你只想为网络编程,那么我真的会考虑只做Three.js,原因我稍后会解释。
- LibGDX主要用于游戏开发,所以如果您正在开发的应用程序是一个游戏,那么您可以考虑使用libGDX,因为它使3D游戏编程变得很好和容易(而且您可以将它移植到多个平台,不仅是web,而且是移动和桌面)。但是如果你在做其他的事情,Three.js可能是一个更好的选择。
- 如果您的发行平台将成为您的web版本,我建议继续使用Three.js,因为libGDX对其WebGL导出没有那么好。最大的问题之一(这是可以解决的,但一个痛苦的处理)是,libGDX不阻止默认浏览器键被使用。但是,如果您确实选择使用libGDX,请确保查看这来解决该问题(或多或少)。
- 在大多数情况下,如果你是主要的平台将是网络,你会想用一种语言编程,这是为了网络开发。如果您在JavaScript中使用Three.js框架编程,那么代码将更干净、更快地运行。同时,如果使用libGDX,它从本质上将JavaScript代码转换为JavaScript代码,使其效率低下且体积庞大,并将包含许多行的JavaScript代码,这些代码要么无用,要么可以简化。这不是libGDX (或者更确切地说是GWT)本身的问题,而是在自动化编程语言翻译时无法避免的问题。为了给您举一个例子,使用编程语言Haxe,如果您将HelloWorld Haxe编译成C++,它包含了许多不必要的变量和方法(在C++源代码中),您只需去掉这些变量和方法即可。这个案子也是一样。
所以最终取决于你的目标是什么。如果您计划只使用Three.js的web版本,那么应该考虑使用libGDX。