GL_EXT_texture_cube_map_array#
Supported Hardware#
Series6, Series6XE, Series6XT
Valid APIs#
OpenGL ES 3.1
Description#
This extension adds the idea of a cube map array to the API, such that multiple cube maps can be stored in a single array texture. This allows things like skyboxes with multiple texture layers to be rendered, whilst only consuming a single texture unit.
Example#
// Generate a cube map array texture
GLuint cubeArrayTexture;
glGenTextures(1, &cubeArrayTexture);
glBindTexture(GL_TEXTURE_CUBE_MAP_ARRAY_EXT, cubeArrayTexture);
// Create the texture storage with 8 layers.
// Number of layers allocated = floor(depth / 6), as there are 6 faces for every cube map. So simply multiply by 6 the number of layers needed.
glTexStorage3D(GL_TEXTURE_CUBE_MAP_ARRAY_EXT, 0, GL_RGBA8, textureWidth, textureHeight, 8 * 6);
[Example]
#extension GL_EXT_texture_cube_map_array : require
uniform lowp samplerCubeArray cubeArrayTexture;
in highp vec3 viewDirection;
in highp float layer;
void main()
{
...
value += texture(cubeArrayTexture, vec4(viewDirection, layer);
...
}