在Snow Leopard中使用Python的OpenGL?

4 投票
4 回答
3170 浏览
提问于 2025-04-15 14:08

我想在Python中玩玩OpenGL。我之前在C++和Objective-C中用过OpenGL,但在Python方面经验不多。我想知道有没有适合Snow Leopard系统的好教程。如果可以的话,我希望能保持在64位模式,因为我听说32位程序需要加载很多额外的32位库。

我已经尝试过一个PyOpenGL/wxPython的教程。但是当我运行代码时,它崩溃了,显示了这个信息:

ImportError: /System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/wx-2.8-mac-unicode/wx/_core_.so: no appropriate 64-bit architecture (see "man python" for running in 32-bit mode)

看起来wxPython在64位系统上有一个bug,导致它无法正常工作。

我也看过Pyglet,但他们也有一个类似的问题。他们提供了一个解决办法(把Python设置为32位模式),但看起来他们不会修复这个问题。

最后,我看了PyGLUT,但我觉得它只适用于Windows。

有没有其他库可以让我访问OpenGL并在屏幕上绘图?我还是希望能保持在64位模式,但如果没有其他选择,我会切换到32位,再试试wxPython或Pyglet。


补充:我也尝试过PyGame。它依赖于SDL,而SDL在SL中是坏的。我考虑过通过PyObjc使用Cocoa,但Xcode的Python应用程序模板已经被移除了

4 个回答

0

你可以试试pygame。pygame是一个用Python封装的SDL库。根据他们的网站,pygame有适用于Mac OS X的版本。这里有一个简单的例子,展示了如何在pygame中使用OpenGL。一旦你能创建窗口并处理事件,接下来的OpenGL编程就和用C或C++写的差不多,只不过多了一些Python的便利。对于OpenGL,一个很棒的教程是NeHe。

2

其实没有什么特别的理由要避免使用32位模式。除非你的Python程序需要更大的地址空间,当然。

4

我在Snow Leopard上成功使用了 PyOpenGL 3.0.0。它使用了ctypes,所以如果有相关的库,它应该可以进行64位的调用(而且Snow Leopard的Python也包含了64位的版本)。我没有用过wxPython和PyOpenGL一起,所以你可能在这方面遇到问题。不过,PyOpenGL也包含了GLUT,这两个都运行得很好。

撰写回答