Hey,
I generate a cube map texture, assign it 3 mipmaps (although the texture can hold up to 9, it’s 256x256) and try to render a mesh with that texture. Unfortunately, I see black triangles.
However, when I use GL_TEXTURE_2D with 3 mipmaps it’s all okay.
I don’t use automatic texture generation, I want manually load the mipmaps and render mesh with them.
Here’s my code from glIntercept log for cube map texture creation:
glGenTextures(1,0xe9fbe8)
glActiveTexture(GL_TEXTURE31)
glBindTexture(GL_TEXTURE_CUBE_MAP,3)
glTexParameteri(GL_TEXTURE_CUBE_MAP,GL_GENERATE_MIPMAP,GL_ZERO)
glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X,0,GL_RGBA8,256,256,0,GL_BGRA,GL_UNSIGNED_BYTE,0x0000)
glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X,0,GL_RGBA8,256,256,0,GL_BGRA,GL_UNSIGNED_BYTE,0x0000)
glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y,0,GL_RGBA8,256,256,0,GL_BGRA,GL_UNSIGNED_BYTE,0x0000)
glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,0,GL_RGBA8,256,256,0,GL_BGRA,GL_UNSIGNED_BYTE,0x0000)
glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z,0,GL_RGBA8,256,256,0,GL_BGRA,GL_UNSIGNED_BYTE,0x0000)
glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,0,GL_RGBA8,256,256,0,GL_BGRA,GL_UNSIGNED_BYTE,0x0000)
glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X,1,GL_RGBA8,128,128,0,GL_BGRA,GL_UNSIGNED_BYTE,0x0000)
glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X,1,GL_RGBA8,128,128,0,GL_BGRA,GL_UNSIGNED_BYTE,0x0000)
glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y,1,GL_RGBA8,128,128,0,GL_BGRA,GL_UNSIGNED_BYTE,0x0000)
glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,1,GL_RGBA8,128,128,0,GL_BGRA,GL_UNSIGNED_BYTE,0x0000)
glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z,1,GL_RGBA8,128,128,0,GL_BGRA,GL_UNSIGNED_BYTE,0x0000)
glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,1,GL_RGBA8,128,128,0,GL_BGRA,GL_UNSIGNED_BYTE,0x0000)
glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X,2,GL_RGBA8,64,64,0,GL_BGRA,GL_UNSIGNED_BYTE,0x0000)
glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X,2,GL_RGBA8,64,64,0,GL_BGRA,GL_UNSIGNED_BYTE,0x0000)
glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y,2,GL_RGBA8,64,64,0,GL_BGRA,GL_UNSIGNED_BYTE,0x0000)
glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,2,GL_RGBA8,64,64,0,GL_BGRA,GL_UNSIGNED_BYTE,0x0000)
glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z,2,GL_RGBA8,64,64,0,GL_BGRA,GL_UNSIGNED_BYTE,0x0000)
glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,2,GL_RGBA8,64,64,0,GL_BGRA,GL_UNSIGNED_BYTE,0x0000)
glActiveTexture(GL_TEXTURE31)
glBindTexture(GL_TEXTURE_CUBE_MAP,3)
glTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X,0,0,0,256,256,GL_BGRA,GL_UNSIGNED_BYTE,0x5f8c738)
glTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X,1,0,0,128,128,GL_BGRA,GL_UNSIGNED_BYTE,0x5fcc750)
glTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X,2,0,0,64,64,GL_BGRA,GL_UNSIGNED_BYTE,0x5fdc768)
glActiveTexture(GL_TEXTURE31)
glBindTexture(GL_TEXTURE_CUBE_MAP,3)
glTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X,0,0,0,256,256,GL_BGRA,GL_UNSIGNED_BYTE,0x6010048)
glTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X,1,0,0,128,128,GL_BGRA,GL_UNSIGNED_BYTE,0x5fe0b98)
glTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X,2,0,0,64,64,GL_BGRA,GL_UNSIGNED_BYTE,0x5ff0bb0)
glActiveTexture(GL_TEXTURE31)
glBindTexture(GL_TEXTURE_CUBE_MAP,3)
glTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y,0,0,0,256,256,GL_BGRA,GL_UNSIGNED_BYTE,0x6051260)
glTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y,1,0,0,128,128,GL_BGRA,GL_UNSIGNED_BYTE,0x5ff4fe8)
glTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y,2,0,0,64,64,GL_BGRA,GL_UNSIGNED_BYTE,0x6005000)
glActiveTexture(GL_TEXTURE31)
glBindTexture(GL_TEXTURE_CUBE_MAP,3)
glTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,0,0,0,256,256,GL_BGRA,GL_UNSIGNED_BYTE,0x60928e8)
glTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,1,0,0,128,128,GL_BGRA,GL_UNSIGNED_BYTE,0x60d2900)
glTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,2,0,0,64,64,GL_BGRA,GL_UNSIGNED_BYTE,0x6009018)
glActiveTexture(GL_TEXTURE31)
glBindTexture(GL_TEXTURE_CUBE_MAP,3)
glTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z,0,0,0,256,256,GL_BGRA,GL_UNSIGNED_BYTE,0x60e3fa8)
glTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z,1,0,0,128,128,GL_BGRA,GL_UNSIGNED_BYTE,0x6123fc0)
glTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z,2,0,0,64,64,GL_BGRA,GL_UNSIGNED_BYTE,0x6133fd8)
glActiveTexture(GL_TEXTURE31)
glBindTexture(GL_TEXTURE_CUBE_MAP,3)
glTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,0,0,0,256,256,GL_BGRA,GL_UNSIGNED_BYTE,0x6137ff0)
glTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,1,0,0,128,128,GL_BGRA,GL_UNSIGNED_BYTE,0x6178008)
glTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,2,0,0,64,64,GL_BGRA,GL_UNSIGNED_BYTE,0x6188020)