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

Initializing an SDL rectangle in Racket and racket-sdl

我正在通过编写 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 canvas or the OpenGL library.

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

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

the FFI manual 查看更多信息。