2013-11-24 3 views
1

Я использую cairo (в частности, привязки haskell для него), чтобы отобразить игровой мир каждый тик. Как и сейчас, я создаю свои сущности, создавая ротацию и перевод, создавая путь и заполняя его. Я ищу гораздо более эффективный способ справиться с этим. То, что я в идеале хотел бы сделать, это создать какой-то спрайт и просто скопировать его на поверхность с правильными координатами.Эффектная роспись спрайтов в каире

Как бы я это сделал? Или, если я думаю об этом неправильно, как мне это сделать иначе? У меня действительно нет опыта работы с играми или cairo, и я просто делаю это для удовольствия. Любые советы приветствуются.

ответ

1

clock demo содержит полный пример того, как кэшировать рендер каира. См., В частности, действие 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) 
Смежные вопросы