15

我目前正在学习使用 OpenGL 的课程,到目前为止,我一直在使用 C 语言编写所有程序。我在 Fedora 和 OpenGL 上安装了 Python,但是在我的 Python 代码中调用 OpenGL 命令的那一刻,我得到了一个分段错误。我不知道为什么会这样。

只是为了避免“只使用 C”注释,这就是我想使用 Python 的原因:

我想从 C 切换到 Python 有几个原因,但主要是因为我们即将开始编写光线追踪器,我想使用类来让我更轻松。因为我讨厌 C++ 中的类,而 C 中的结构似乎有点疯狂,所以我想我会尝试一下 Python。我也一直在寻找再次使用 Python 的理由,因为它已经有一段时间了。

谢谢你的帮助。

4

6 回答 6

16

您可能还想考虑使用Pyglet而不是 PyOpenGL。它是本地平台上原生 OpenGL 库的 ctypes-wrapper,以及窗口支持(应该处理您想要使用 GLUT 的大部分内容。)pyglet-users列表非常活跃且非常有用。

于 2008-10-29T13:58:22.847 回答
2

好吧,我不知道这些是否是原始海报使用的库,但我在使用 PyOpenGL 的宠物项目(使用 C++ 和 Python 的图形引擎)中看到了相同的问题。

如果 PyOpenGL 是在加载 python 脚本之后创建的(我先加载脚本,然后从我的 C++ 代码中调用其中的 Python 方法),则 PyOpenGL 没有正确获取渲染上下文。

如果您在加载 Python 脚本之前初始化显示并创建 OpenGL 渲染上下文,则不会出现此问题。

于 2009-11-22T13:16:15.637 回答
1

您使用的是什么 OpenGL 库?什么窗口库?什么版本的 Python?

我能想到的最可能的原因是您的窗口库(SDL 或您正在使用的任何东西)在您开始调用它之前没有初始化 OpenGL。

于 2008-10-28T02:34:02.010 回答
0

我们对随机分段错误都没有想法。没有足够的信息。你为opengl使用了哪些python库?你如何使用它们?你能告诉我们你的代码吗?这可能是微不足道的事情,但我的上帝技能最终只能告诉我。

python中的光线追踪器?我更喜欢在 C 中使用这些结构来执行此操作。但是,我假设你不打算做一个实时光线追踪器,所以这可能没问题。

于 2008-10-28T06:12:11.633 回答
0

也许您正在调用一个需要活动 OpenGL 上下文的 OpenGL 函数,而没有一个?这不一定会崩溃,但我想它可能会崩溃。如何设置这样的上下文取决于平台,自从我使用 Python 中的 GL 以来已经有一段时间了(当我这样做时,我还使用了 GTK+,这使事情变得复杂)。

于 2008-10-29T14:06:59.663 回答
0

脚本永远不会导致分段错误。但首先看看你的内核和 kmod 视频驱动程序是否工作属性......扩展模块可能会导致“分段错误”。

于 2010-02-17T21:14:47.140 回答