我在LibGDX中没有找到任何适用于矢量图形的东西。
有没有无痛的选择?
在这一点上(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 解析。
我也在学习 LibGDX 并且即将面临一些像你一样的类似问题;在正交视图中渲染 2D 模型。
LibGDX 与 OpenGL ES 一起用于图形,还支持导入使用 Blender 3D 插件创建的模型。我还没有尝试过,但这里有一个解决方案:
我想解决这个问题的解决方案是在 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。