Python glGenTextures的图像格式

Python glGenTextures的图像格式,python,opengl,Python,Opengl,我已经用python转换了一个图像 from PIL import Image img = Image.open('myPixelArt.bmp') 然后我打电话 im=glGenTextures(1,img) 但事实证明,im=0 以及许多其他功能 我已经尝试了几乎所有的方法来显示这个图像,我想知道我在这个功能中投入了什么 glGenTextures中第二个参数的格式是什么(不是以.bmp或.png为单位,而是以矩阵大小为单位,数字范围是0到1还是255等) 如何在python中找到img的

我已经用python转换了一个图像

from PIL import Image
img = Image.open('myPixelArt.bmp')
然后我打电话

im=glGenTextures(1,img)

但事实证明,
im=0

以及许多其他功能

我已经尝试了几乎所有的方法来显示这个图像,我想知道我在这个功能中投入了什么

glGenTextures中第二个参数的格式是什么(不是以.bmp或.png为单位,而是以矩阵大小为单位,数字范围是0到1还是255等)

如何在python中找到img的格式


glGenTextures是否应该返回0?

您错误理解了
glGenTextures
的功能。此函数仅为OpenGL纹理创建处理程序。您使用的是
c
语言签名,它仅在python文档中提供信息

此函数返回将用作纹理名称的
n
整数,c中的正确语法为:

void glGenTextures(GLsizei n,  GLuint * textures);
但是您没有使用c,因此对于python,您必须使用正确的签名:

 textures = glGenTextures   ( n )
其中纹理必须是一个数组,该数组将保存函数返回的名称

可以为单个纹理设置n=1:

texture = glGenTextures(1)
要为新纹理配置和设置数据,您必须使用
glBindTexture
将名称绑定到上下文,使用
glTexImage2D
设置纹理的像素数据,还可以使用
glTexParameter
设置一些参数


有关完整的示例,请参见

OP正在使用Python;没有指针之类的东西,绑定可能会偏离标准函数签名以进行补偿。@三十二上校:谢谢,我从未用Python编程。@三十二上校:我的解释没有错,你可以调整你的判断…@j-p谢谢。那么在这种情况下,glGenTextures甚至对img没有任何作用?@j-p您答案底部的示例对我非常有用,谢谢,
glGenTextures(…)
不应该返回0。在C中,它保留n个未使用的名称,并将它们存储在传递的数组中(并且不返回任何内容)。Python可能有点不同,但想法是一样的。名称0从未被使用过;最初,0绑定到所有纹理图像单元,我们称之为“默认”纹理。成功调用
glGenTextures(…)
所得到的最低数字是1。谢谢,那么我认为img的形式是错误的;我尝试了im=glGenTextures(1),得到了im=0。