我正在用 Python 画一些流体动力学。过了一会儿,我正在寻找更快的速度,所以我用 C 重写了实际的逻辑并建立了一些 Python 绑定(使用SWIG)。
我现在的问题是我没有如何以一种好的方式渲染它。逻辑是逐像素运行的,所以我想要跟踪和渲染像素。
如果我尝试在接受 a 的 C 库中创建一个函数,Python 会给我一个TypeErrorSDL_Surface*
,我可能有点天真地认为 PyGame 很容易将它直接映射到 SDL。如果我让 C 库“init”返回一个SDL_Surface*
.
有什么好方法可以做到这一点?如果我只渲染 C lib 中的所有内容,那将不是问题。但我想在那里放一些 GUI(使用 Python)。C 库已经跟踪哪些像素是“脏的”。我是否应该公开该列表并让 Python 循环遍历它,为每个脏像素调用一个函数?看起来很糟糕,因为这些巨大的循环正是我想用 C 重写部分应用程序的确切原因。
在任何人建议之前,boost.python现在安装起来有点重(因为我在 Windows 上),所以我暂时只使用 SWIG(除非有人有聪明的方法来安装“just” boost 。Python?)。
我希望这里有一颗灵丹妙药。如何制作 C 库、运行 SDL、与 Python 共享渲染目标、运行 PyGame?