在 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 查看更多信息。
我正在通过编写 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 查看更多信息。