PyOpenGL Cube Mapping Textures
Я пробовал 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()
1 ответ
Карта куба - это не буквальное "наложение текстуры на куб". Это своего рода текстура, отдельная от 2D, 3D и других типов текстур.
2D-текстура - это 2D-изображение, для доступа к которому вы используете положение в 2D-пространстве. 3D-текстура - это 3D-изображение, для доступа к которому вы используете положение в 3D-пространстве. Карта куба - это набор из 6 2D-изображений, для доступа к которым вы используете 3D-направление. Представьте себя сидящим в центре куба. В каждом направлении есть место на этом кубе. Вот какой цвет вы получаете от доступа к карте куба с заданным направлением.