2013-11-24 133 views
1

我使用cairo(具體來說,它的haskell綁定)來渲染遊戲世界每個勾號。現在,我通過創建旋轉和平移,創建路徑並填充它來生成我的實體。我正在尋找更有效的方式來處理這個問題。我理想的做法是創建某種形狀的精靈,並將其複製到正確的座標上。在開羅精靈繪畫的精靈

我該怎麼做呢?或者,如果我以錯誤的方式思考這個問題,我該怎麼做呢?我真的沒有製作遊戲或開羅的經驗,我只是爲了好玩而做這個。任何建議表示讚賞。

回答

1

clock demo包括如何緩存cairo渲染的完整示例。特別參見redrawStaticLayers動作:

let redrawStaticLayers = do 
     (width, height) <- widgetGetSize window 
     drawWin <- widgetGetDrawWindow window 
     background <- createImageSurface FormatARGB32 width height 
     foreground <- createImageSurface FormatARGB32 width height 
     let clear = do 
      save 
      setOperator OperatorClear 
      paint 
      restore 
     renderWith background $ do 
     clear 
     drawClockBackground True width height 
     renderWith foreground $ do 
     clear 
     drawClockForeground True width height 
     writeIORef backgroundRef (Just background) 
     writeIORef foregroundRef (Just foreground)