【发布时间】:2014-09-02 23:44:18
【问题描述】:
我刚刚在 Mac OS 10.6.8 上安装了 python 2.7(.6)。我通过 homebrew 安装了 python,通过 pip 安装了尽可能多的我需要的模块,其余的从源代码编译。
我正在使用 Pygame 和 PyOpenGL 制作游戏。游戏在我之前的 python 安装(2.6)上运行良好,但不幸的是 pygame/SDL 中的某些东西出错了,它不再加载 PNG,所以我认为是时候更新了。但是,我知道这段代码可以运行。
所有模块都可以正常导入,但 glTexImage2D 失败。代码sn-ps:
import numpy
from OpenGL.GL import *
from OpenGL.arrays import vbo
from OpenGLContext.arrays import *
from OpenGL.GL import shaders
from OpenGL.GLU import *
--- snip ---
def makeTexture(self, image, w, h, name = False):
texture = glGenTextures(1)
glActiveTexture(GL_TEXTURE0)
glBindTexture(GL_TEXTURE_2D, texture)
glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, w,h, 0, GL_RGBA, GL_UNSIGNED_BYTE, image )
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
if name:
self.textures[name] = texture
else:
self.texture = texture
还有错误:
Traceback (most recent call last):
--- snip ---
File "GameParts/Shader.py", line 88, in makeTexture
glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, w,h, 0, GL_RGBA, GL_UNSIGNED_BYTE, image )
File "latebind.pyx", line 32, in OpenGL_accelerate.latebind.LateBind.__call__ (src/latebind.c:989)
File "wrapper.pyx", line 314, in OpenGL_accelerate.wrapper.Wrapper.__call__ (src/wrapper.c:6505)
ctypes.ArgumentError: ("argument 9: <type 'exceptions.TypeError'>: No array-type handler for type <class 'ctypes.c_ubyte'> (value: c_ubyte(0)) registered", (GL_TEXTURE_2D, 0, GL_RGBA, 256, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, c_ubyte(0)))
$ pip list
mercurial (2.9.2)
numpy (1.8.1)
OpenGLContext (2.3.0b1)
Pillow (2.5.1)
pip (1.5.4)
PyDispatcher (2.0.3)
pygame (1.9.2a0)
PyOpenGL (3.1.0)
PyOpenGL-accelerate (3.1.0)
PyOpenGL-Demo (3.0.1b1)
PyVRML97 (2.3.0a3)
setuptools (3.4.1)
wsgiref (0.1.2)
wxPython (3.0.0.0)
wxPython-common (3.0.0.0)
据我所知,安装顺序可能有问题?
【问题讨论】:
标签: python python-2.7 pip ctypes pyopengl