Python glGenTextures的图像格式
我已经用python转换了一个图像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的
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。