我目前正在调查从使用OpenGL和OpenGL ES SVG文件渲染矢量图形的可能性。我打算针对Windows和Android。我的理想解决方案是拥有一个最小的C库,可以从给定的SVG文件生成多边形三角剖分。这会生成标准的OpenGL或OpenGL ES调用,并在重绘时使用显示列表或vbo进行优化。我只需绘制一个显示列表,在翻译和旋转后绘制矢量图像,以便将其与其他OpenGL调用混合使用。渲染SVG支持OpenGL(和OpenGL ES)
到目前为止,我看到的建议是首先使用QT或开罗。 - 这不是一个选项,因为我希望管理自己的OpenGL上下文,而不需要膨胀的库(在我尝试实现的上下文中)。这也不适用于Android。
第二种选择是使用渲染到纹理的库。虽然这对静态矢量图形来说可能是好的,但对于经常出现缩放和旋转的游戏来说,这并不是一种有效或可行的选择。
第三,有可能使用OpenVG。 OpenVG规范有一些开源实现(ShivaVG等),但我还没有找到一个能够在运行时从给定的SVG文件生成相应OpenVG调用的库,并且我无法看到如何将其优化为我们可能希望用显示列表或vbo。
所有三种方法都受到限制。如果没有其他解决方案存在,我认为最有希望的选择是使用OpenVG实现。所以我的问题是,有没有图书馆可以做我想要的,或接近我想要的?如果不是,有没有充分的理由为什么不呢?试图从头开始做这件事情会更好吗?
解析路径的svg文件并不困难。检查以下绘制二次贝塞尔曲线。 //www.opengl.org/resources/code/samples/redbook/bezcurve.c – 2011-06-09 06:51:35
@Grady glEvalCoord在OpenGL ES中不存在;而GLU,它的镶嵌器也不重要,例如凸多边形。 @ me232很好的问题,upvote'd&favorite'd – Calvin1602 2011-06-09 08:29:02
+1良好的研究和很好的框架问题 – 2011-06-09 10:19:42