Light | Dark

# docs.GL

OpenGL 4
OpenGL 3
OpenGL ES 3
OpenGL ES 2

# 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);

## Tutorials

Songho - OpenGL Frame Buffer Object (FBO)
open.gl - Textures Objects and Parameters
opengl-tutorial.org - Tutorial 5 : A Textured Cube

## 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` | - | - | - | - | - | - | - | - | - | - | - | ✔

## See Also

glTexImage2D, glBindTexture, glGenTextures

## Copyright

Copyright © 2010-2014 Khronos Group. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. https://opencontent.org/openpub/.

Think you can improve this page? Edit this page on GitHub.