2012-06-04 129 views
0

我試過texture_2D來推動我的立方體上的紋理。那沒問題。PyOpenGL多維數據集貼圖紋理

但是當我使用TEXTURE_CUBE_MAP紋理是不可見的。只是一個黑色立方體。

任何人都可以幫助我嗎?

#### INIT FUNCTION 
textureIDs = glGenTextures(1)                                                  

glBindTexture(GL_TEXTURE_CUBE_MAP, textureIDs)                                              
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)                                       
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)                                       
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE)                                       
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR)                                        
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR) 

glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, imgRaw.size[0], imgRaw.size[1], 0, GL_RGB, GL_UNSIGNED_BYTE, img)                           


..... (for the other five also) 


####DISPLAY FUNCTION 
glEnable(GL_TEXTURE_GEN_S)                                                   
glEnable(GL_TEXTURE_GEN_T)                                                   
glEnable(GL_TEXTURE_GEN_R)                                                   
glEnable(GL_TEXTURE_CUBE_MAP)                                                  

glEnableClientState(GL_VERTEX_ARRAY)    


myVBO.bind()                                                                                                                                                                     

glUseProgram(program) #shader frag and vert                                                    
varLocation = glGetUniformLocation(program, "mvpMatrix")                                            
glUniformMatrix4fv(varLocation , 1, GL_TRUE, mvpMat.tolist())                                          


glVertexPointer(3, GL_FLOAT, 32, myVBO)                                                                                                                                           
glBindTexture(GL_TEXTURE_CUBE_MAP, textureIDs)                                              
glDrawArrays(GL_QUADS, 0 ,len(data))                                                 
myVBO.unbind()        

回答

1

一個cube map是不是文字「把質地上的立方體。」這是一個kind of texture, separate from 2D, 3D, etc texture types.

2D紋理是一個2D圖像,您可以使用2D空間中的位置來訪問。 3D紋理是一種3D圖像,您可以使用3D空間中的位置進行訪問。立方體貼圖是一組6個2D圖像,您可以使用3D方向進行訪問。想象自己坐在一個立方體的中心。在每個方向都是該立方體上的一個位置。這是通過訪問具有給定方向的立方體貼圖獲得的顏色。