我尝试过texture_2D来推动我的立方体上的纹理。那没问题。
但是当我使用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()
答案 0 :(得分:1)
cube map不是文字“在多维数据集上放置纹理”。这是一个kind of texture, separate from 2D, 3D, etc texture types.
2D纹理是2D图像,您可以使用2D空间中的位置进行访问。 3D纹理是3D图像,您可以使用3D空间中的位置进行访问。立方体贴图是一组6个2D图像,您可以使用 3D方向进行访问。想象一下,你自己坐在一个立方体的中心。在每个方向上都是该立方体上的一个位置。这就是访问具有给定方向的立方体贴图所获得的颜色。