2010-01-16 68 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