webgl - 用于 3D Web 开发的three.js vs libgdx

标签 webgl libgdx three.js

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

最佳答案

我认为我没有资格谈论 Three.js,但我在我的许多项目中都使用过 libGDX,并且知道它在 WebGL(浏览器导出)方面的劣势。

  • 首先要考虑的因素是你习惯什么语言,Three.js 使用 JavaScript,libGDX 使用 Java。虽然 libGDX 导出到 WebGL,但这只是因为它使用 GWT,您仍然使用 Java 进行编码。
  • LibGDX(如您所说)专门用于移动和(在一定程度上)桌面应用程序。如果您的目标是创建适用于 Web 以及移动设备和桌面的东西,那么应该考虑使用 libGDX。但是,如果您只想为 Web 编程,那么我真的会考虑只使用 Three.js,原因我稍后会解释。
  • LibGDX 主要用于游戏开发,因此,如果您正在制作的应用程序是游戏,您可以考虑使用 libGDX,因为它使 3D 游戏编程变得简单易用(并且您可以将其移植到多个平台,而不是只有网络,但移动和桌面)。但是,如果您正在制作其他东西,Three.js 可能是更好的选择。
  • 如果您的分发平台将是您的 Web 版本,我建议坚持使用 Three.js,因为 libGDX 不适合其 WebGL 导出。最大的问题之一(这是可以解决的,但处理起来很痛苦)是 libGDX 不会阻止使用默认浏览器 key 。但是,如果您确实选择使用 libGDX,请务必查看 this解决这个问题(或多或少)。
  • 在大多数情况下,如果您的主要平台将是 Web,您将希望使用一种用于 Web 开发的语言进行编程。如果您使用 Three.js 框架在 JavaScript 中进行编程,那么代码运行起来会更加简洁和快速。同时,如果您使用 libGDX,它本质上会将 Java 代码转换为 JavaScript 编码,使其效率低下且体积庞大,并且将包含许多无用或可以简化的 JavaScript 代码行。这不是 libGDX(或者更确切地说是 GWT)本身的问题,而只是自动化编程语言翻译时无法避免的问题。举个例子,使用编程语言 Haxe,如果你将 HelloWorld Haxe 编译为 C++,它包含一堆不必要的变量和方法(在 C++ 源代码中),你可以摆脱它们。在这种情况下也是如此。

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

    关于webgl - 用于 3D Web 开发的three.js vs libgdx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10820926/

    相关文章:

    java - Libgdx Y轴,如何反转?

    java - libgdx 中的多线程和加载 Assets

    javascript - 三个js-将相机设置为加载的对象

    glsl - 给定 2D 剪辑空间中的坐标,我如何对背景纹理进行采样

    javascript - 在 Canvas/WebGL 中渲染 HTML

    javascript - Three.js - 如何使用 BufferGeometry 绘制不连续的线?

    java - GWT:从 Java 调用 javascript 函数

    css - 将 three.js 背景更改为透明或其他颜色

    javascript - 使用 CanvasRenderer 可能存在内存泄漏

    mobile - Phaserjs 是否完全支持 3d