gpt4 book ai didi

python - 带有 Python 绑定(bind)的 C lib,两者都想要渲染

转载 作者:行者123 更新时间:2023-11-30 18:09:38 25 4
gpt4 key购买 nike

我正在用 Python 绘制一些流体动力学草图。一段时间后,我寻求更快的速度,因此我用 C 重写了实际逻辑并设置了一些 Python 绑定(bind)(使用 SWIG)。

我现在的问题是我不知道如何以好的方式渲染它。逻辑是逐像素运行的,因此像素就是我想要跟踪和渲染的内容。

如果我尝试在 C 库中创建一个接受 SDL_Surface* 的函数,Python 会给我一个 TypeError ,我可能有点天真地认为 PyGame 映射了轻松直接转至 SDL。 Python 似乎也不确定如果我让 C 库“init”返回 SDL_Surface* 该怎么办。

有什么好的方法可以做到这一点?如果我只渲染 C 库中的所有内容,那就不会有问题。但我想在那里放置一些 GUI(使用 Python)。 C lib 已经记录了哪些像素是“脏”的。我应该公开该列表并让Python循环遍历它,为每个脏像素调用一个函数吗?看起来很糟糕,因为这些巨大的循环正是我想用 C 重写部分应用程序的确切原因。

在有人建议之前,boost.python 现在安装起来有点繁重(因为我在 Windows 上),所以我暂时坚持使用 SWIG(除非有人有一个聪明的方法来安装“只是”boost.python?)。

我希望这里能有 Elixir 。 如何制作 C 库、运行 SDL、与 Python 共享渲染目标、运行 PyGame?

最佳答案

您是否尝试过类似下面的方法从 python 对象获取 SDL_Surface*

PySurfaceObject *obj;
SDL_Surface *surf;
if (!PyArg_ParseTuple(args, 'O!', &PySurface_Type, &obj) {
return NULL; # or other action for error
}
surf = PySurface_AsSurface(obj);

关于python - 带有 Python 绑定(bind)的 C lib,两者都想要渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1785604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com