Light | Dark

glGenerateMipmap

Name

glGenerateMipmap, glGenerateTextureMipmap — generate mipmaps for a specified texture object

C Specification

void glGenerateMipmap( GLenum target);
void glGenerateTextureMipmap( GLuint texture);

Parameters

target

Specifies the target to which the texture object is bound for glGenerateMipmap. Must be one of GL_TEXTURE_1D, GL_TEXTURE_2D, GL_TEXTURE_3D, GL_TEXTURE_1D_ARRAY, GL_TEXTURE_2D_ARRAY, GL_TEXTURE_CUBE_MAP, or GL_TEXTURE_CUBE_MAP_ARRAY.

texture

Specifies the texture object name for glGenerateTextureMipmap.

Description

glGenerateMipmap and glGenerateTextureMipmap generates mipmaps for the specified texture object. For glGenerateMipmap, the texture object is that bound to to target. For glGenerateTextureMipmap, texture is the name of the texture object.

For cube map and cube map array textures, the texture object must be cube complete or cube array complete respectively.

Mipmap generation replaces texel image levels $level_{base} + 1$ through $q$ with images derived from the $level_{base}$ image, regardless of their previous contents. All other mimap images, including the $level_{base}+1$ image, are left unchanged by this computation.

The internal formats of the derived mipmap images all match those of the $level_{base}$ image. The contents of the derived images are computed by repeated, filtered reduction of the $level_{base} + 1$ image. For one- and two-dimensional array and cube map array textures, each layer is filtered independently.

Notes

Cube map array textures are accepted only if the GL version is 4.0 or higher.

Errors

GL_INVALID_ENUM is generated by glGenerateMipmap if target is not one of the accepted texture targets.

GL_INVALID_OPERATION is generated by glGenerateTextureMipmap if texture is not the name of an existing texture object.

GL_INVALID_OPERATION is generated if target is GL_TEXTURE_CUBE_MAP or GL_TEXTURE_CUBE_MAP_ARRAY, and the specified texture object is not cube complete or cube array complete, respectively.

Examples

Create a texture object with linear mipmaps and edge clamping.
GLuint texture_id;
glGenTextures(1, &texture_id);
glBindTexture(GL_TEXTURE_2D, texture_id);

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

// texture_data is the source data of your texture, in this case
// its size is sizeof(unsigned char) * texture_width * texture_height * 4
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, texture_width, texture_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, texture_data);
glGenerateMipmap(GL_TEXTURE_2D); // Unavailable in OpenGL 2.1, use gluBuild2DMipmaps() instead

glBindTexture(GL_TEXTURE_2D, 0);

Version Support

OpenGL Version
Function / Feature Name 2.0 2.1 3.0 3.1 3.2 3.3 4.0 4.1 4.2 4.3 4.4 4.5
glGenerateMipmap - -
glGenerateTextureMipmap - - - - - - - - - - -
Think you can improve this page? Edit this page on GitHub.