我正在通过编写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或OpenGL 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/