haskell - 开罗 Sprite 高效绘制

标签 haskell paint cairo

我正在使用 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/

相关文章:

Haskell:为什么我可以在 ghci 中加载此文件,但当我尝试在 Hugs 中执行相同操作时,我会收到语法错误?

Java 绘画问题

java - 绘制还是使用 JLabel 更好

compiler-construction - Haskell编译时函数计算

haskell - 如何更改 runTCPClient 超时持续时间?

haskell - 无压缩单子(monad)变压器

Java fillRect() 不一致

python - Python 中布局文本的最佳模块

gtk+: How to Draw Custom Window Borders Like Chrome or Steam

python - 使用 PIL 生成阴影按钮