Python中的OpenGl

15

我目前在一门使用OpenGL的课程中,至今为止所有程序都是用C语言编写的。我已经在Fedora上安装了Python以及OpenGL,但只要在我的Python代码中调用一个OpenGL命令,就会出现段错误。我不知道这是为什么。

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

有几个原因使我想从C切换到Python,但主要原因是我们即将开始编写光线追踪器,我想使用类来简化操作。由于我讨厌C++中的类和C中的结构似乎有些疯狂,所以我想尝试一下Python。同时,我也一直在寻找再次使用Python的理由,因为有一段时间没有使用它了。

感谢任何帮助。


http://pyopengl.sourceforge.net/ - plan9assembler
6个回答

16

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


2

嗯,我不知道原帖作者使用的是否是这些库,但我在我的一个宠物项目中(使用C++和Python编写的图形引擎)中看到了完全相同的问题,使用PyOpenGL。

如果在加载Python脚本后创建渲染上下文,PyOpenGL将无法正确地捕获它(我先加载脚本,然后从我的C++代码中调用Python方法)。

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


1
你正在使用哪个OpenGL库?使用哪个窗口管理库?Python版本是多少?
我能想到的最可能的原因是,在开始调用它之前,你的窗口管理库(如SDL或其他)没有初始化OpenGL。

1
我正在使用Python 5.3.1,PyOpenGL 3.0.0-0.8,freeglut 2.4.0-14。 - corymathews
1
远离来自未来的那个人!! - mlvljr

0

脚本从不引起分段错误。 但是首先请确保您的内核和kmod视频驱动程序正常工作... 扩展模块可能会导致"分段错误"。


0

我们对随机分段错误没有任何想法。信息不足。您正在使用哪些Python库进行OpenGL?您如何使用它们?您能向我们展示您的代码吗?这可能是一些微不足道的问题,但我的天啊 - 我的技能仅限于告诉我这一点。

在Python中进行光线追踪?我更喜欢用那些结构体在C中完成。但是,我假设您不会进行实时光线追踪,所以这可能没问题。


0
也许你正在调用一个需要活动的OpenGL上下文的OpenGL函数,但是没有一个?这不一定会导致崩溃,但我猜可能会。如何设置这样的上下文取决于平台,而且我已经有一段时间没有使用Python中的GL了(当我使用时,我还使用了GTK+,这使问题更加复杂)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接