用于游戏开发的2D矢量建模

时间:2010-01-16 23:33:39

标签: c++ c 2d vector-graphics

让我的小行星克隆(在C中)我宁愿爱上基于矢量的实体,但我只是将它们编码为x,y点阵列。对于像小行星这样的东西来说这很好,但如果我想制作更复杂的2D模型,该怎么办?

我注意到那里有an awful lot of 3D modelling software,以及有关将3D模型导入到一个C / C ++程序中以供OpenGL使用的大量教程和帮助。

然而,我对创建基于2D矢量的模型比3D更感兴趣,因为我很高兴继续尝试2D游戏。是否存在2D建模这样的概念?是否有专门用于创建和导出2D模型和库以便导入2D模型的工具,或者只是在3D软件中创建平面模型然后导入这些文件(例如.3ds,.ms3d)并将它们平放在z轴上?

我到目前为止唯一的想法是使用类似Inkscape的内容进行建模,生成SVG文件,然后使用Cairo导入和渲染它们。这会运作良好,还是有其他建议?

注意我对任何类型的建模都有点新手,所以我可能会问一个愚蠢的问题......

3 个答案:

答案 0 :(得分:7)

无需支持我自己的答案,但我已经对使用SVG进行了更多的研究。当我使用OpenGL时,似乎OpenVG可能是一个很好的匹配。

  • AmanithVG - 基于OpenGL构建的OpenVG的商业实现,包括软件和硬件渲染。下载仅供评估,它工作得很漂亮,但我不知道它的成本是多少。
  • ShivaVG - 作者很恼火AmanithVG是商业性的,因此在纯ANSI C中制作了自己的开源实现。虽然暂时没有更新。 At SourceForge
  • Anti-Grain Geometry - 对此不确定。我认为支持SVG,但我认为只有软件渲染。
  • librsvg - 使用Cairo作为主要后端来渲染SVG。看起来不错。

似乎除librsvg之外的所有内容都没有实际允许加载SVG文件,因此可能需要另外一步将SVG解析为适当的OpenVG结构(大多数似乎是大浮点数组,所以也不是这样)硬)。同样似乎存在从SVG到OpenVG的项目的一对一映射,这是有希望的。据我所知,OpenVG几乎是为SVG制作的。

我可能会使用ShivaVG。也许它并不完美,但它吸引了老虎,我喜欢纯粹的C / OpenGL实现,而且我很怀疑我还会做任何复杂的事情。

答案 1 :(得分:6)

就2D矢量游戏编程而言,它通常是Flash和Flex的领域。

仍然SVG并通过开罗加载它似乎是一个可行的解决方案。虽然我会注意确保您启用了硬件加速(最好是OpenGL后端)。

就2D格式而言,对于任何格式的SVG都不会得到如此好的支持,所以我坚持使用它。技术上像Collada或X3D这样的东西确实支持2D图形,但实际上它们有很多无用的(对于2D程序员)膨胀。

答案 2 :(得分:3)

SVG是2D的方式:)

如果绘图速度是一个问题,你必须要小心你的文件有多复杂 - 并注意SVG没有针对解析速度进行优化,因此你可能会招致重大的启动时间惩罚加载模型时。