9

我在LibGDX中没有找到任何适用于矢量图形的东西。

这篇文章表明AGG已经很接近了,他们还提到这很痛苦。

有没有无痛的选择?

4

2 回答 2

5

在这一点上(2013 年年中),Libgdx 中似乎没有任何对矢量图形的轻松支持。首先,对于矢量图形,这通常意味着实践中的SVG

“通用” SVG 解决方案的部分问题在于,让它与所有各种极端情况一起工作似乎是一个问题。然而,如果你只是想渲染你自己的 SVG 对象,你可能有一个更简单的 SVG 子集来处理,并且修改一些东西可能对你有用(即使它对每个人来说都不够通用)。

此外,如果您愿意使用位图作为中介(您不需要将矢量图形直接渲染到屏幕上),您只需要找到基于 Java 的 SVG 解析器和光栅器(与使用Libgdx 或 LWJGL 后端)。

请参阅将 SVG 文件与 libgdx 一起使用。这里的建议是将 LibgdxShapeRenderer用于简单的“可缩放”图形。它没有 SVG,但它可能对您的用例是合理的。

谷歌搜索发现了这个使用 AWT 后端的GPL 的 Java SVG 渲染器。这段代码看起来很简单,可以适应使用 Libgdx 渲染。但是,考虑到它的简单程度,尚不清楚实际支持多少 SVG(或者它是否完全有效)。

Apache Batik项目是一个通用的 Java SVG 解析器和渲染器。它看起来很大。您也许可以将 SVG 渲染为 .png 格式(然后将其转换为 Libgdx Pixmaps)。(我没有这方面的经验。)

有一个(死了?)libgdx SVG 扩展项目,但看起来只完成了最基本的 SVG 解析。

于 2013-06-26T16:16:19.070 回答
4

我也在学习 LibGDX 并且即将面临一些像你一样的类似问题;在正交视图中渲染 2D 模型。

LibGDX 与 OpenGL ES 一起用于图形,还支持导入使用 Blender 3D 插件创建的模型。我还没有尝试过,但这里有一个解决方案:

从 Blender 导入模型

处理代码

我想解决这个问题的解决方案是在 Blender 3D 中为您的可缩放图形建模。如果您使用的是 SVG 文件,那么 Blender 3D 能够导入这些文件,因此您可以使用 Blender 3D 作为第一个着陆点。

ADD:我现在设法做到了。不过有一点点转折:使用 python 脚本的方法已经过时了。在上面第一个链接的页面评论中,有一个指向xoppa 教程的链接。那里描述了如何使用FBX 转换器工具导出模型. 我在 Blender 3D 中制作了一个面向前视图的 2D 平面形状。将其导出到 FBX 并使用转换器工具制作 G3DB 文件。使用 xoppa 教程中描述的 LibGdx 的 G3dModelLoader 方法,您现在可以使用 ModelBatch 在视图中绘制它。让您的正交相机看着 0,0,0(或任何适合您需要的值)并在 z 轴上稍微向后退一点 - 否则您将无法看到它。因为它是正交相机,所以多远并不重要,但不知何故 0,0,1 会产生某种意义 :) 还要记住现在为渲染中的每一帧清除 GL_DEPTH_BUFFER_BIT。

于 2013-11-30T10:41:37.567 回答