我目前正在调查使用OpenGL和OpenGL ES从SVG文件中呈现矢量图形的可能性。 我计划针对Windows和Android进行开发。 我理想的解决方案是具有最小化C库,可以从给定的SVG文件生成一个多边形三角剖分。 然后将生成标准的OpenGL或OpenGL ES调用,并在重新绘制时使用显示列表或VBO进行优化。 在平移和旋转后,我会简单地绘制一个显示列表以绘制矢量图像,使我可以将其与其他OpenGL调用混合使用。
到目前为止,我看到的建议是首先使用QT或Cairo。 - 鉴于我想要实现的内容,这不是一个选项,因为我希望管理自己的OpenGL上下文而没有臃肿的库。 并且这也不适用于Android。
第二个选择是使用呈现纹理的库。虽然这对于静态矢量图形可能还可以,但对于需要频繁缩放和旋转的游戏来说,这不是一种有效或可行的选项。
第三种方法是使用OpenVG。 OpenVG规范有一些开源实现(如ShivaVG等),但我尚未找到能够在运行时从给定的SVG文件生成适当的OpenVG调用的库,并且我无法看到如何像我们希望使用显示列表或VBO进行优化。
这三种方法都有局限性。如果没有其他解决方案,我认为最有前途的选择是使用OpenVG实现。因此,我的问题是,是否存在任何库可以做到我想要的事情,或者接近我想要的内容? 如果没有,是否有充分的理由? 还是尝试从头开始做这件事更好?