[英]PyOpenGL: Cube Texture Is a Solid Color
我正在向立方体添加纹理,但一直遇到这个问题
我真的不知道为什么会发生这种情况,想知道是否还有其他人可以提供帮助。
以下是我的一些代码片段:
生成立方体顶点的函数。
def cube_vertices(x, y, z, n):
""" Return the vertices of the cube at position x, y, z with size 2*n."""
return [
[x+n,y-n,z-n], [x+n,y+n,z-n], [x-n,y+n,z-n], [x-n,y-n,z-n],
[x+n,y-n,z+n], [x+n,y+n,z+n], [x-n,y-n,z+n], [x-n,y+n,z+n],
]
生成立方体的函数。
def Cube(cubeverts):
glEnable(GL_TEXTURE_2D)
glBegin(GL_QUADS)
for surf in surfs:
for vertex in surf:
glTexCoord2f(0.0,1.0)
glVertex3fv(cubeverts[vertex])
glEnd()
和一个制作纹理的函数:
def get_texture(texturename,width=16,height=16):
img = Image.open(texturename)
img_data = numpy.array(list(img.getdata()), numpy.int8)
textID = glGenTextures(1)
glBindTexture(GL_TEXTURE_2D, textID)
glPixelStorei(GL_UNPACK_ALIGNMENT, 1)
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP)
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP)
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT)
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT)
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL)
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, img_data)
return textID
我能够通过添加来解决这个问题
if n == 0:
xv = 0.0
yv = 0.0
if n == 1:
xv = 1.0
yv = 0.0
if n == 2:
xv = 1.0
yv = 1.0
if n == 3:
xv = 0.0
yv = 1.0
到冲浪循环中的 for 顶点
最终立方体函数:
def Cube(cubeverts):
glBegin(GL_QUADS)
for surf in surfs:
n = 0
for vertex in surf:
if n == 0:
xv = 0.0
yv = 0.0
if n == 1:
xv = 1.0
yv = 0.0
if n == 2:
xv = 1.0
yv = 1.0
if n == 3:
xv = 0.0
yv = 1.0
glTexCoord2f(xv,yv)
glVertex3fv(cubeverts[vertex])
n += 1
glEnd()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.