2014-07-12 23 views
0

我刚刚在Mac OS 10.6.8上安装了python 2.7(.6)。我通过自制软件安装了python,我需要的许多模块都可以通过pip来完成,剩下的从源码编译。PyOpenGL没有数组类型处理程序类型<class'ctypes.c_ubyte'>

我正在用Pygame和PyOpenGL制作游戏。游戏在我以前的python安装(2.6版本)上运行良好,但不幸的是pygame/SDL中的某些内容出错了,它不会再加载PNG,所以我觉得是时候更新了。但是,我知道这个代码运行。

所有的模块导入都很好,但glTexImage2D失败。代码片段:

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) 

据我所知,这可能是与秩序的东西的问题进行了安装?

回答

0

我通过“image”传递了错误的数据 - 这是我的错误。真正的问题是为什么它在第一个地方工作...