2010-01-16 72 views
10

制作我的小行星克隆(C语言)我宁愿爱上基于矢量的实体,但我只是将它们编码为x,y点数组。对于像Asteroids这样的事情来说很好,但如果我想制作更复杂的2D模型,该怎么办?用于游戏开发的2D矢量建模

我注意到这里有an awful lot of 3D modelling software,还有充足的教程和帮助将3D模型导入到OpenGL的C/C++程序中。

但是我更喜欢创建基于2D矢量的模型而不是3D,因为我非常乐意继续尝试2D游戏一段时间。是否存在2D建模这样的概念?是否有创建和导出用于导入2D模型的2D模型和库的工具,或者只是在3D软件中创建平面模型,然后导入这些文件(例如.3ds,.ms3d)并将它们平放在z轴上?

我到目前为止唯一的想法是使用类似Inkscape的东西进行建模,生成SVG文件,然后使用Cairo导入并渲染它们。这会工作得好吗,还是你有其他建议?

注意我有点新手到任何种类的造型,所以我可能会问一个愚蠢的问题...

回答

6

至于2D矢量游戏编程去,它通常是Flash的域和Flex。

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

就2D格式而言,对于任何格式,您都不会获得像SVG一样的良好支持,所以我会坚持使用它。技术上来说,Collada或X3D的确支持2D图形,但实际上它们对于2D程序员来说有很多无用之处。

+0

+1 for flash and flex – 2010-01-16 23:54:26

3

SVG是去2D :)顺便

如果绘图速度是一个问题,你必须要小心你的文件怎么弄复杂,虽然 - 并注意SVG不优化速度的解析,所以在加载模型时可能会导致启动时间的巨大损失。

+0

+1:启动时间不是这样的问题,更重要的是保持程序中的格式,以便快速硬件渲染。 – 2010-01-16 23:43:24

7

没有必要upvote我自己的答案,但我已经做了更多的使用SVG的研究。当我使用OpenGL时,似乎OpenVG可能是一个很好的匹配。

  • AmanithVG - 基于OpenGL的OpenVG的商业实现,包含软件和硬件渲染。下载可用于评估只,而且它运行的很好,但我不知道它的成本。
  • ShivaVG - 作者感到恼火的是,AmanithVG是商业版本,所以在纯ANSI C中创建了自己的开源实现。虽然尚未更新一段时间。 At SourceForge
  • Anti-Grain Geometry - 对此不确定。我认为对SVG有支持,但我认为只是软件渲染。
  • librsvg - 将Cairo用作主要后端来呈现SVG。看起来不错。

这一切似乎除了的librsvg停止短的实际,允许SVG文件被加载,所以大概需要有另一个步骤,其中SVGs被解析成适当的OpenVG的结构(其中大部分似乎是大浮标阵,所以不要太难)。同样,SVG到OpenVG的项目似乎也是一对一的映射,这很有希望。据我所知,OpenVG非常适合SVG。

我可能会使用ShivaVG。也许这并不完美,但它吸引了老虎,我喜欢纯粹的C/OpenGL实现,并且我非常怀疑我现在会做那些复杂的事情。

+0

那么,你最初的问题太广泛了。有关OpenGL位,请参阅:http://stackoverflow.com/a/25162290/3588161 – Fizz 2014-08-06 14:31:16