Python 使用pyopengl glTexImage2D时出错
如何解决此问题?请帮助我,谢谢这些图像似乎没有4个颜色通道。很可能图像只有3个颜色通道。您必须在中指定格式Python 使用pyopengl glTexImage2D时出错,python,numpy,python-imaging-library,pyopengl,Python,Numpy,Python Imaging Library,Pyopengl,如何解决此问题?请帮助我,谢谢这些图像似乎没有4个颜色通道。很可能图像只有3个颜色通道。您必须在中指定格式GL_RGB,而不是GL_RGBA。例如: format=GL\u RGB如果imgData.shape[1]==3否则GL\u RGBA glTexImage2D(GL_纹理_2D,0,GL_RGBA,图像大小[0],图像大小[1],0, 格式,GL_无符号字节,imgData) 图像似乎没有4个颜色通道。很可能图像只有3个颜色通道。您必须在中指定格式GL_RGB,而不是GL_RGBA。例
GL_RGB
,而不是GL_RGBA
。例如:
format=GL\u RGB如果imgData.shape[1]==3否则GL\u RGBA
glTexImage2D(GL_纹理_2D,0,GL_RGBA,图像大小[0],图像大小[1],0,
格式,GL_无符号字节,imgData)
图像似乎没有4个颜色通道。很可能图像只有3个颜色通道。您必须在中指定格式GL_RGB
,而不是GL_RGBA
。例如:
format=GL\u RGB如果imgData.shape[1]==3否则GL\u RGBA
glTexImage2D(GL_纹理_2D,0,GL_RGBA,图像大小[0],图像大小[1],0,
格式,GL_无符号字节,imgData)
Traceback (most recent call last):
File "./x.py", line 132, in <module>
texid = glutils.loadTexture("wall.png")
File "C:\Users\6e25h\Desktop\Mess\py-opengl-error\glutils.py", line 31, in loadTexture
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, img.size[0], img.size[1], 0, GL_RGBA, GL_UNSIGNED_BYTE, imgData)
File "src/latebind.pyx", line 39, in OpenGL_accelerate.latebind.LateBind.__call__
File "src/wrapper.pyx", line 311, in OpenGL_accelerate.wrapper.Wrapper.__call__
File "C:\Users\6e25h\AppData\Local\Programs\Python\Python37\lib\site-packages\OpenGL\platform\baseplatform.py", line 415, in __call__
return self( *args, **named )
OSError: exception: access violation reading 0x0000020F6D752000
def loadTexture(filename):
"""load OpenGL 2D texture from given image file"""
img = Image.open(filename)
imgData = numpy.array(list(img.getdata()), np.int8)
texture = glGenTextures(1)
glPixelStorei(GL_UNPACK_ALIGNMENT,1)
glBindTexture(GL_TEXTURE_2D, texture)
glPixelStorei(GL_UNPACK_ALIGNMENT,1)
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, img.size[0], img.size[1], 0, GL_RGBA, GL_UNSIGNED_BYTE, imgData)
glBindTexture(GL_TEXTURE_2D, 0)
return texture