问题标签 [haskell-sdl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - Haskell + SDL,不了解函数/状态用法
首先请注意,我不确定如何命名这个问题,因为我不知道到底是什么问题。
我一直在玩 Haskell+SDL 并且被卡住了。我的 GitHub 存储库在这里:https ://github.com/kennycason/haskell_boxxle/
在第 209 行有一行代码:
quit <- whileEvents $ modifyPlayerPos . handleKeyboard
它只能移动播放器,但我真的希望能够修改存储的其他内容GameData
,即存储在Room
(即boxes = [Coord]
)中的数据
我通过以下方式开始循环:
但是在我进入循环之后,我真的不知道如何gData
再次获得访问权限,或者即使我知道了,如何编写modify
函数,就像我为 GameData (modifyPlayerPos
等) 中的其他值所做的那样。
我复制并修改handleKeyboard
到handleKeyboard2
以演示我想要传递给 handleKeyboard 的类型。
我还是 Monads 和 Haskell 的新手,所以我很感激任何建议。如果我的问题不够清楚,请告诉我。谢谢!
haskell - 如何在 Haskell 中将 SVG 光栅化为 SDL.Surface?
我正在使用sdl2@2.2.0和sdl2-image@2.0.0。我想绘制 SVG 图像,但 sdl2-image 不支持这种格式(请参阅https://www.libsdl.org/projects/SDL_image/):
SDL_image 是一个图像文件加载库。
它将图像加载为 SDL 表面和纹理,并支持以下格式:BMP、GIF、JPEG、LBM、PCX、PNG、PNM、TGA、TIFF、WEBP、XCF、XPM、XV
如何加载 SVG、缩放/调整大小并将其栅格化为 aSDL.Surface
或SDL.Texture
?
编辑:
在 C++ 中,您可以使用nanosvg库:
您必须对static_cast<void *>
传递给的图像数据执行 a SDL_CreateRGBSurfaceFrom
。Haskell SDL.createRGBSurfaceFrom
(sdl2 版本 2.2.0)期望Data.Vector.Storable.Mutable.VectorIO Word8
作为图像数据。
我找到了一个有前途的图书馆rasterific-svg
此包可以将 SVG 渲染为图像或将其转换为 PDF。
drawingOfSvgDocument
您可以使用或进行渲染renderSvgDocument
。但是,我不知道如何将任一结果转换为Data.Vector.Storable.Mutable.VectorIO Word8
.
编辑2:
我现在有一个正在运行的例子。但是,渲染结果还不正确。
这个SVG
呈现为
haskell - 如何从 Haskell 的 SDL 绑定中的 RenderConfig 中提取值
这可能是初学者的错误,因为这是我第一次“真正”尝试使用 Haskell。
我的相关代码片段如下所示:
值得注意的是, ghc 并没有抱怨 的导入RendererConfig
,这让我觉得我用错了。
看起来它的来源RendererConfig
只有两个参数,所以我不确定为什么匹配在 case 表达式中不起作用。
编辑
我得到的错误信息: