lisp - 在 Racket 和racket-sdl 中初始化 SDL 矩形

标签 lisp sdl racket

我正在通过编写SDL应用程序来学习Racket,但我不知道如何初始化矩形结构。在racket-sdl中定义如下:

(define-cstruct _SDL_Rect
  ([x _int]
   [y _int]
   [w _int]
   [h _int]))

如何创建矩形实例?具体来说,我想创建一个矩形作为最后一个参数传递给以下函数:

(SDL_BlitSurface hello-world-surface #f screen-surface #f)

最佳答案

首先,如果您刚刚开始使用 Racket,我建议您使用一些打包的库进行绘图,例如 GUI library's canvasOpenGL library .

racket-sdl project ,只有 3 次提交(最后一次是 2 年前),在我看来只不过是一个可行性测试。

不过,您的问题是有效的,所以让我们给您一个答案。 (define-cstruct ...) 将 C struct 本质上定义为指针,因此您没有明显的方法来更改其内部结构。您可以使用函数 make_SDL_Rect 在 C 中创建一个小型包装器库,并使用它,但这不值得这么麻烦。最好使用 make-cstruct-type 定义 SDL_Rect 类型,这样可以进行参数转换。

查看更多信息:the FFI manual .

关于lisp - 在 Racket 和racket-sdl 中初始化 SDL 矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31673004/

相关文章:

c++ - 获取当前正在使用 SDL_Mixer 播放 Mix_Music

eval - `eval` 和 `eval-syntax` 之间的区别

scheme - 为 Dr.Scheme 寻找 SimplyScheme 成语

events - SDL 中的输入(按下按键时)

lambda - 使用 lambda Racket

lisp - Maxima:从函数返回函数并在之后对其进行评估

lisp - lisp 函数细化

stream - Racket :采取:违反契约(Contract)

lisp - 方案:Cond "not equal"

c++ - 使用 DFS 算法对形状进行泛洪填充