有没有办法将矢量图形合并到LibGDX开发中?

时间:2013-06-26 14:31:24

标签: opengl-es svg libgdx vector-graphics

我在LibGDX中找不到可用于矢量图形的任何内容。

post表明AGG接近它,他们也提到它很痛苦。

是否有一种无痛的替代方案?

2 个答案:

答案 0 :(得分:5)

此时(2013年中期),Libgdx中的矢量图形似乎没有任何无痛支持。首先,对于矢量图形,通常在实践中意味着SVG

“通用”SVG解决方案的部分问题在于,使其适用于所有各种角落案例似乎都是一个问题。但是,如果您只是尝试渲染自己的SVG对象,则可能有一个更简单的SVG子集来处理和黑客攻击可能对您有用(即使它对每个人都不够通用)。

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

Using SVG files with libgdx。这里的建议是使用Libgdx ShapeRenderer来获得简单的“可伸缩”图形。它没有SVG,但它对你的用例可能是合理的。

谷歌搜索显示使用AWT后端的GPL'd Java SVG renderer。这段代码看起来很简单,可以适应使用Libgdx渲染。但是,考虑到它是多么简单,不清楚SVG实际上支持了多少(或者它甚至可以支持)。

Apache Batik项目是一个通用的Java SVG解析器和渲染器。它看起来很大。你或许可以让它将SVG渲染成.png格式(然后将它们转换成Libgdx Pixmaps)。 (我对此没有任何经验。)

有一个(死?)libgdx SVG extension project但看起来只有最基本的SVG解析才完成。

答案 1 :(得分:4)

我还在学习LibGDX,并且即将遇到像你这样的类似问题;在正交视图中渲染2D模型。

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

Importing Models from Blender

Processing code

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

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