用C ++渲染矢量图形(.svg)

时间:2010-11-14 07:49:47

标签: c++ windows vector-graphics allegro

我和朋友正在开发2D游戏,其中图形将是.svg文件,我们将通过首先光栅化它们或者直接在曲面上渲染它们来适当地缩放它们(在某些时候仍需要光栅化)

问题是,我一直在寻找一个可以让我获取.svg文件并最终在allegro中呈现它的库。据我所知,它会将光栅化纳入某种格式,即快板可以阅读,然后快板可以呈现“扁平化”的图像。

那么我可以使用哪些C ++库来获取.SVG文件并“展平”它以便我可以渲染它?库显然也需要支持缩放,所以我可以缩放矢量图形然后光栅化它。

我正在使用Windows和Visual C ++ Express 2010。

任何建议都会有所帮助,因为我现在很迷茫:

我尝试过Cairo,但它只允许写.svg文件,并且不允许你读取.svg文件。我也研究了与Cario一起使用的librsvg,但是我在Windows上正常工作时遇到了很多麻烦(因为它有大量的GNOME依赖)。如果您有任何指南可以使这些工作(在Windows上)也很好用。

8 个答案:

答案 0 :(得分:8)

wxsvg library允许加载和操作SVG文件。 Qt也有一个SVG module

答案 1 :(得分:3)

我的谈话时间有点晚了,但我建议你看看Nano SVG,这是一款非常轻量级的svg渲染器,不需要cairo / libsvg。我得到nanosvg编译并在几个小时内工作。它非常基础,但它完成了工作。

答案 2 :(得分:2)

SVG++ library为SVG读取提供了高级支持,因此可以在合理的时间内实现使用allegro渲染SVG。

答案 3 :(得分:2)

我最近在C ++中整理了一个SVG渲染器库: https://github.com/igagis/svgren

它使用Cairo渲染到离屏表面。 支持渐变和各种形状。

答案 4 :(得分:1)

https://github.com/sammycage/lunasvg是一个很好的svg解析,渲染和操作库。它是用纯c ++编写的

答案 5 :(得分:0)

个人而言,我在Simple Viewer GL中使用了NanoSVG。它使我可以轻松地用几行代码来加载和光栅化SVG图像。但是此库对SVG的支持较弱。

答案 6 :(得分:0)

我一直在寻找一种在基于Windows OS的MFC项目中呈现SVG文件的快速方法。

在这种情况下,Microsoft浏览器Web浏览器ActiveX控件被认为是理想的解决方案。

enter image description here

这是使用浏览器控件加载SVG文件的结果。

Rendering SVG file using a Browser Control

答案 7 :(得分:0)

借助nanosvg和许多其他c ++ svg解析器的帮助,向应用程序添加svg呈现功能应该是微不足道的。配方如下:svg解析器+矢量渲染库=琐碎的svg渲染。矢量渲染库可以是cairo和许多其他库(想到的是nanovg以及许多其他vg库)。这是example,介绍如何使用cairo + fltk + nanosvg组合支持svg渲染。现在,所有svg解析器以及cairo本身以及其他渲染器都存在错误/缺点,但是基本的svg支持应该永远不会出现问题。