问题描述
我正在向立方体添加纹理,但是一直遇到这个问题
我真的不知道为什么会这样,并且想知道是否还有其他人可以帮助您。
以下是我的一些代码段:
def cube_vertices(x,y,z,n):
""" Return the vertices of the cube at position x,z with size 2*n."""
return [
[x+n,y-n,z-n],[x+n,y+n,[x-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_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,GL_RGB,width,height,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
到冲浪循环中的顶点
最终立方函数:
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()