17

我正在尝试学习游戏编程的基础知识,pygame并且pyopengl为此进行了安装。

我的代码:

import sys
import OpenGL

from OpenGL.GL import *     
from OpenGL.GLU import *    
from OpenGL.GLUT import *

def draw():
      glClear(GL_COLOR_BUFFER_BIT)
      glutWireTeapot(0.5)
      glFlush()

glutInit(sys.argv)
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB)
glutInitWindowSize(250, 250)
glutInitWindowPosition(100, 100)
glutCreateWindow("Python OGL Program")
glutDisplayFunc(draw)
glutMainLoop()

draw()

当我在命令提示符下运行上述代码时,使用

python test.py

我收到以下错误。

Traceback (most recent call last):
  File "test.py", line 13, in <module>
    glutInit(sys.argv)
  File "C:\Python27\lib\site-packages\pyopengl-3.0.2a5-py2.7.egg\OpenGL\GLUT\special.py", line 324, in glutInit
    _base_glutInit( ctypes.byref(count), holder )
TypeError: 'NoneType' object is not callable

我不明白为什么我会收到这个错误。我打电话glutinit的方式不对吗?

我正在使用 Python 2.7.2。

4

10 回答 10

13

我在 Windows 7 64 位上使用 Python 2.7.3 并且遇到了导致与 Noob 相同的症状的问题。

但是上面的 PyOpenGL 重新安装解决方案并没有帮助我。

我尝试了一个远射 - 安装 freeglut - 它有帮助!

我从这里使用了 Windows MSVC 2.8.0 二进制包,并相应地将 32 位和 64 位 DLL 放到了我的 32 位 (c:\Windows\SysWOW64) 和 64 位 (C:\Windows\System32) 目录中。

于 2012-05-29T10:59:28.550 回答
7

我使用 setup.py 安装(具有管理员权限)在Python 3.2上安装了PyOpenGL-3.0.2b2,它出现与 OP 相同的错误。安装脚本没有复制 DLLS 文件夹,因此您必须自己复制整个文件夹\PyOpenGL-3.0.2b2\OpenGL\DLLS。 这对我有用,希望对其他人有帮助。

于 2012-08-27T23:04:25.813 回答
5

在 linux 操作系统中,您应该 在 ubuntu 12.04 中安装freeglut3 :

 sudo apt-get install freeglut3
于 2012-11-13T11:39:18.143 回答
4

我也发生了同样的问题。我在 windows xp 32 位上使用 Python 2.7。

解决方案:

只需从http://user.xmission.com/~nate/glut.html下载glut-3.7.6-bin.zip,解压缩,将glut32.dll放在C:\windows\system32中就可以了。

于 2012-09-23T14:24:48.623 回答
4

看来必须与 pyOpenGL 一起下载 glut 或 freeglut。最重要的是,在我的 64 位 Win7 系统上,它只有在我将glut32.dll文件放入后才起作用C:\Windows\System(不是C:\Windows\System32- 放入\System32不起作用!)

这是 glut 的链接:http: //user.xmission.com/~nate/glut.html

和freeglut:http ://www.transmissionzero.co.uk/software/freeglut-devel/

于 2012-06-29T12:38:49.780 回答
3

glutInit()需要 2 个参数,首先是一个 int 作为命令行参数的数量,然后是一个列表(参数)。
glutInit(len(sys.argv),sys.argv)应该这样做,因为argc模块 sys.

于 2012-04-17T09:58:52.040 回答
1

问题出在我的PyOpenGL安装上。之前我使用easy_install.

因此,正如@Ferdinand 建议的那样,您的 pyopengl 安装似乎有问题。

我使用python setup.py install它进行了全新安装,并且可以正常工作。

于 2012-04-21T11:03:38.010 回答
1

我对 python 2.7 64 位窗口有类似的问题。从http://www.lfd.uci.edu/~gohlke/pythonlibs/安装 pyOpenGL 包。非常感谢 Christopher Gohlke 的维护!!

于 2013-07-11T05:58:06.407 回答
0

我只是在 windows-64bits 上使用 python2.7.3,我遇到了问题。我通过使用非官方的 pyopengl 包解决了这个问题。从文章来看,似乎官方包不支持 64 位窗口。 http://codeyarns.com/2012/04/27/pyopengl-installation-notes-for-windows/

于 2013-03-14T08:52:53.317 回答
0

这似乎是 PyOpenGL win32 安装程序中的一个错误。它应该从源包 (.zip) 中复制 DLLS 目录,但在我的测试中没有这样做。这应该在 PyOpenGL 本身中解决,我将在下一个测试版中这样做。

同时,您可以将 OpenGL/DLLS 目录从 PyOpenGL 3.1.0b2 源 .zip 复制到您的 site-packages/OpenGL 目录中,以安装 GLUT 和 GLE DLL,而无需将它们安装到您的系统目录中。

于 2014-04-02T19:46:45.763 回答