我正在使用 cairo (特别是它的 haskell 绑定(bind))来渲染游戏世界。就像现在一样,我通过创建旋转和平移、创建路径并填充它来生成我的实体。我正在寻找一种更有效的方法来处理这件事。理想情况下,我想做的是创建某种 Sprite ,然后将其复制到表面的正确坐标处。
我该如何去做呢?或者,如果我的想法是错误的,那么我该怎么做呢?我真的没有游戏制作或开罗的经验,我这样做只是为了好玩。任何建议表示赞赏。
最佳答案
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)
关于haskell - 开罗 Sprite 高效绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20182032/