<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
<!-- saved from url=(0013)about:internet -->
<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" pref:renderer="mathplayer-dl"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="stylesheet" type="text/css" href="opengl-man.css" /><title>glTexStorage2D - OpenGL ES 3.0 Reference Pages</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /></head><body><div class="refentry" title="glTexStorage2D"><a id="glTexStorage2D"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>glTexStorage2D — simultaneously specify storage for all levels of a two-dimensional texture</p></div><div class="refsynopsisdiv" title="C Specification"><h2>C Specification</h2><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">glTexStorage2D</b>(</code></td><td>GLenum <var class="pdparam">target</var>, </td></tr><tr><td> </td><td>GLsizei <var class="pdparam">levels</var>, </td></tr><tr><td> </td><td>GLenum <var class="pdparam">internalformat</var>, </td></tr><tr><td> </td><td>GLsizei <var class="pdparam">width</var>, </td></tr><tr><td> </td><td>GLsizei <var class="pdparam">height</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Parameters"><a id="parameters"></a><h2>Parameters</h2><div class="variablelist"><dl><dt><span class="term"><em class="parameter"><code>target</code></em></span></dt><dd><p>
                    Specify the target of the operation. <em class="parameter"><code>target</code></em> must be
                    one of <code class="constant">GL_TEXTURE_2D</code>,
                    or <code class="constant">GL_TEXTURE_CUBE_MAP</code>.
                </p></dd><dt><span class="term"><em class="parameter"><code>levels</code></em></span></dt><dd><p>
                    Specify the number of texture levels.
                </p></dd><dt><span class="term"><em class="parameter"><code>internalformat</code></em></span></dt><dd><p>
                    Specifies the sized internal format to be used to store texture image data.
                </p></dd><dt><span class="term"><em class="parameter"><code>width</code></em></span></dt><dd><p>
                    Specifies the width of the texture, in texels.
                </p></dd><dt><span class="term"><em class="parameter"><code>height</code></em></span></dt><dd><p>
                    Specifies the height of the texture, in texels.
                </p></dd></dl></div></div><div class="refsect1" title="Description"><a id="description"></a><h2>Description</h2><p>
            <code class="function">glTexStorage2D</code> specifies the storage requirements for all levels
            of a two-dimensional texture simultaneously. Once a texture is specified with this
            command, the format and dimensions of all levels become immutable. 
			The contents of the image may still be modified, however, its storage requirements
            may not change. Such a texture is referred to as an <span class="emphasis"><em>immutable-format</em></span>
            texture.
        </p><p>
            The behavior of <code class="function">glTexStorage2D</code> depends on the <em class="parameter"><code>target</code></em> parameter.
            When <em class="parameter"><code>target</code></em> is <code class="constant">GL_TEXTURE_2D</code>,
            calling <code class="function">glTexStorage2D</code> is equivalent, assuming no errors are generated,
            to executing the following pseudo-code:
        </p><pre class="programlisting">    for (i = 0; i &lt; levels; i++)
    {
        glTexImage2D(target, i, internalformat, width, height, 0, format, type, NULL);
        width = max(1, (width / 2));
        height = max(1, (height / 2));
    }</pre><p>
            When <em class="parameter"><code>target</code></em> is <code class="constant">GL_TEXTURE_CUBE_MAP</code>, <code class="function">glTexStorage2D</code>
            is equivalent to:
        </p><pre class="programlisting">    for (i = 0; i &lt; levels; i++)
    {
        for (face in (+X, -X, +Y, -Y, +Z, -Z))
        {
            glTexImage2D(face, i, internalformat, width, height, 0, format, type, NULL);
        }
        width = max(1, (width / 2));
        height = max(1, (height / 2));
    }</pre><p>
            Since no texture data is actually provided, the values used in the pseudo-code
            for <em class="parameter"><code>format</code></em> and <em class="parameter"><code>type</code></em> are
            irrelevant and may be considered to be any values that are legal for the
            chosen <em class="parameter"><code>internalformat</code></em> enumerant. <em class="parameter"><code>internalformat</code></em>
            must be one of the sized internal formats given in Table 1, or one of the compressed internal
			formats	given in Table 2 below. Upon success,
            the value of <code class="constant">GL_TEXTURE_IMMUTABLE_FORMAT</code> becomes
            <code class="constant">GL_TRUE</code>. The value of <code class="constant">GL_TEXTURE_IMMUTABLE_FORMAT</code>
            may be discovered by calling <a class="citerefentry" href="glGetTexParameter.xml"><span class="citerefentry"><span class="refentrytitle">glGetTexParameter</span></span></a>
            with <em class="parameter"><code>pname</code></em> set to <code class="constant">GL_TEXTURE_IMMUTABLE_FORMAT</code>.
            No further changes to the dimensions or format of the texture object may be
            made. Using any command that might alter the dimensions or format of the
            texture object (such as <a class="citerefentry" href="glTexImage2D.xml"><span class="citerefentry"><span class="refentrytitle">glTexImage2D</span></span></a> or
            another call to <code class="function">glTexStorage2D</code>) will result in the
            generation of a <code class="constant">GL_INVALID_OPERATION</code> error, even if it
            would not, in fact, alter the dimensions or format of the object.
        </p><p>
            </p><div class="table"><a id="idp9364224"></a><p class="title"><b>Table 1. Sized Internal Formats</b></p><div class="table-contents"><table summary="Sized Internal Formats" border="1"><colgroup><col align="center" /><col align="center" /><col align="center" /><col align="center" /><col align="center" /><col align="center" /><col align="center" /><col align="center" /><col align="center" /><col align="center" /></colgroup><thead><tr><th align="center"><span class="bold"><strong>
            Sized Internal Format
            </strong></span></th><th align="center"><span class="bold"><strong>
            Format
            </strong></span></th><th align="center"><span class="bold"><strong>
            Type
            </strong></span></th><th align="center"><span class="bold"><strong>
            Red Bits
            </strong></span></th><th align="center"><span class="bold"><strong>
            Green Bits
            </strong></span></th><th align="center"><span class="bold"><strong>
            Blue Bits
            </strong></span></th><th align="center"><span class="bold"><strong>
            Alpha Bits
            </strong></span></th><th align="center"><span class="bold"><strong>
            Shared Bits
            </strong></span></th><th align="center"><span class="bold"><strong>
            Color renderable
            </strong></span></th><th align="center"><span class="bold"><strong>
            Texture filterable
            </strong></span></th></tr></thead><tbody><tr><td align="center"><code class="constant">GL_R8</code></td><td align="center"><code class="constant">GL_RED</code></td><td align="center"><code class="constant">GL_UNSIGNED_BYTE</code></td><td align="center">8</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center">Y</td><td align="center">Y</td></tr><tr><td align="center"><code class="constant">GL_R8_SNORM</code></td><td align="center"><code class="constant">GL_RED</code></td><td align="center"><code class="constant">GL_BYTE</code></td><td align="center">s8</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center">Y</td></tr><tr><td align="center"><code class="constant">GL_R16F</code></td><td align="center"><code class="constant">GL_RED</code></td><td align="center"><code class="constant">GL_HALF_FLOAT</code>,<p><code class="constant">GL_FLOAT</code></p></td><td align="center">f16</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center">Y</td></tr><tr><td align="center"><code class="constant">GL_R32F</code></td><td align="center"><code class="constant">GL_RED</code></td><td align="center"><code class="constant">GL_FLOAT</code></td><td align="center">f32</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_R8UI</code></td><td align="center"><code class="constant">GL_RED_INTEGER</code></td><td align="center"><code class="constant">GL_UNSIGNED_BYTE</code></td><td align="center">ui8</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center">Y</td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_R8I</code></td><td align="center"><code class="constant">GL_RED_INTEGER</code></td><td align="center"><code class="constant">GL_BYTE</code></td><td align="center">i8</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center">Y</td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_R16UI</code></td><td align="center"><code class="constant">GL_RED_INTEGER</code></td><td align="center"><code class="constant">GL_UNSIGNED_SHORT</code></td><td align="center">ui16</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center">Y</td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_R16I</code></td><td align="center"><code class="constant">GL_RED_INTEGER</code></td><td align="center"><code class="constant">GL_SHORT</code></td><td align="center">i16</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center">Y</td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_R32UI</code></td><td align="center"><code class="constant">GL_RED_INTEGER</code></td><td align="center"><code class="constant">GL_UNSIGNED_INT</code></td><td align="center">ui32</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center">Y</td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_R32I</code></td><td align="center"><code class="constant">GL_RED_INTEGER</code></td><td align="center"><code class="constant">GL_INT</code></td><td align="center">i32</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center">Y</td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_RG8</code></td><td align="center"><code class="constant">GL_RG</code></td><td align="center"><code class="constant">GL_UNSIGNED_BYTE</code></td><td align="center">8</td><td align="center">8</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center">Y</td><td align="center">Y</td></tr><tr><td align="center"><code class="constant">GL_RG8_SNORM</code></td><td align="center"><code class="constant">GL_RG</code></td><td align="center"><code class="constant">GL_BYTE</code></td><td align="center">s8</td><td align="center">s8</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center">Y</td></tr><tr><td align="center"><code class="constant">GL_RG16F</code></td><td align="center"><code class="constant">GL_RG</code></td><td align="center"><code class="constant">GL_HALF_FLOAT</code>,<p><code class="constant">GL_FLOAT</code></p></td><td align="center">f16</td><td align="center">f16</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center">Y</td></tr><tr><td align="center"><code class="constant">GL_RG32F</code></td><td align="center"><code class="constant">GL_RG</code></td><td align="center"><code class="constant">GL_FLOAT</code></td><td align="center">f32</td><td align="center">f32</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_RG8UI</code></td><td align="center"><code class="constant">GL_RG_INTEGER</code></td><td align="center"><code class="constant">GL_UNSIGNED_BYTE</code></td><td align="center">ui8</td><td align="center">ui8</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center">Y</td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_RG8I</code></td><td align="center"><code class="constant">GL_RG_INTEGER</code></td><td align="center"><code class="constant">GL_BYTE</code></td><td align="center">i8</td><td align="center">i8</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center">Y</td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_RG16UI</code></td><td align="center"><code class="constant">GL_RG_INTEGER</code></td><td align="center"><code class="constant">GL_UNSIGNED_SHORT</code></td><td align="center">ui16</td><td align="center">ui16</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center">Y</td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_RG16I</code></td><td align="center"><code class="constant">GL_RG_INTEGER</code></td><td align="center"><code class="constant">GL_SHORT</code></td><td align="center">i16</td><td align="center">i16</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center">Y</td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_RG32UI</code></td><td align="center"><code class="constant">GL_RG_INTEGER</code></td><td align="center"><code class="constant">GL_UNSIGNED_INT</code></td><td align="center">ui32</td><td align="center">ui32</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center">Y</td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_RG32I</code></td><td align="center"><code class="constant">GL_RG_INTEGER</code></td><td align="center"><code class="constant">GL_INT</code></td><td align="center">i32</td><td align="center">i32</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center">Y</td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_RGB8</code></td><td align="center"><code class="constant">GL_RGB</code></td><td align="center"><code class="constant">GL_UNSIGNED_BYTE</code></td><td align="center">8</td><td align="center">8</td><td align="center">8</td><td align="center"> </td><td align="center"> </td><td align="center">Y</td><td align="center">Y</td></tr><tr><td align="center"><code class="constant">GL_SRGB8</code></td><td align="center"><code class="constant">GL_RGB</code></td><td align="center"><code class="constant">GL_UNSIGNED_BYTE</code></td><td align="center">8</td><td align="center">8</td><td align="center">8</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center">Y</td></tr><tr><td align="center"><code class="constant">GL_RGB565</code></td><td align="center"><code class="constant">GL_RGB</code></td><td align="center"><code class="constant">GL_UNSIGNED_BYTE</code>,<p><code class="constant">GL_UNSIGNED_SHORT_5_6_5</code></p></td><td align="center">5</td><td align="center">6</td><td align="center">5</td><td align="center"> </td><td align="center"> </td><td align="center">Y</td><td align="center">Y</td></tr><tr><td align="center"><code class="constant">GL_RGB8_SNORM</code></td><td align="center"><code class="constant">GL_RGB</code></td><td align="center"><code class="constant">GL_BYTE</code></td><td align="center">s8</td><td align="center">s8</td><td align="center">s8</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center">Y</td></tr><tr><td align="center"><code class="constant">GL_R11F_G11F_B10F</code></td><td align="center"><code class="constant">GL_RGB</code></td><td align="center"><code class="constant">GL_UNSIGNED_INT_10F_11F_11F_REV</code>,<p><code class="constant">GL_HALF_FLOAT</code>,</p>
			<code class="constant">GL_FLOAT</code></td><td align="center">f11</td><td align="center">f11</td><td align="center">f10</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center">Y</td></tr><tr><td align="center"><code class="constant">GL_RGB9_E5</code></td><td align="center"><code class="constant">GL_RGB</code></td><td align="center"><code class="constant">GL_UNSIGNED_INT_5_9_9_9_REV</code>,<p><code class="constant">GL_HALF_FLOAT</code>,</p>
			<code class="constant">GL_FLOAT</code></td><td align="center">9</td><td align="center">9</td><td align="center">9</td><td align="center"> </td><td align="center">5</td><td align="center"> </td><td align="center">Y</td></tr><tr><td align="center"><code class="constant">GL_RGB16F</code></td><td align="center"><code class="constant">GL_RGB</code></td><td align="center"><code class="constant">GL_HALF_FLOAT</code>,<p><code class="constant">GL_FLOAT</code></p></td><td align="center">f16</td><td align="center">f16</td><td align="center">f16</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center">Y</td></tr><tr><td align="center"><code class="constant">GL_RGB32F</code></td><td align="center"><code class="constant">GL_RGB</code></td><td align="center"><code class="constant">GL_FLOAT</code></td><td align="center">f32</td><td align="center">f32</td><td align="center">f32</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_RGB8UI</code></td><td align="center"><code class="constant">GL_RGB_INTEGER</code></td><td align="center"><code class="constant">GL_UNSIGNED_BYTE</code></td><td align="center">ui8</td><td align="center">ui8</td><td align="center">ui8</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_RGB8I</code></td><td align="center"><code class="constant">GL_RGB_INTEGER</code></td><td align="center"><code class="constant">GL_BYTE</code></td><td align="center">i8</td><td align="center">i8</td><td align="center">i8</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_RGB16UI</code></td><td align="center"><code class="constant">GL_RGB_INTEGER</code></td><td align="center"><code class="constant">GL_UNSIGNED_SHORT</code></td><td align="center">ui16</td><td align="center">ui16</td><td align="center">ui16</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_RGB16I</code></td><td align="center"><code class="constant">GL_RGB_INTEGER</code></td><td align="center"><code class="constant">GL_SHORT</code></td><td align="center">i16</td><td align="center">i16</td><td align="center">i16</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_RGB32UI</code></td><td align="center"><code class="constant">GL_RGB_INTEGER</code></td><td align="center"><code class="constant">GL_UNSIGNED_INT</code></td><td align="center">ui32</td><td align="center">ui32</td><td align="center">ui32</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_RGB32I</code></td><td align="center"><code class="constant">GL_RGB_INTEGER</code></td><td align="center"><code class="constant">GL_INT</code></td><td align="center">i32</td><td align="center">i32</td><td align="center">i32</td><td align="center"> </td><td align="center"> </td><td align="center"> </td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_RGBA8</code></td><td align="center"><code class="constant">GL_RGBA</code></td><td align="center"><code class="constant">GL_UNSIGNED_BYTE</code></td><td align="center">8</td><td align="center">8</td><td align="center">8</td><td align="center">8</td><td align="center"> </td><td align="center">Y</td><td align="center">Y</td></tr><tr><td align="center"><code class="constant">GL_SRGB8_ALPHA8</code></td><td align="center"><code class="constant">GL_RGBA</code></td><td align="center"><code class="constant">GL_UNSIGNED_BYTE</code></td><td align="center">8</td><td align="center">8</td><td align="center">8</td><td align="center">8</td><td align="center"> </td><td align="center">Y</td><td align="center">Y</td></tr><tr><td align="center"><code class="constant">GL_RGBA8_SNORM</code></td><td align="center"><code class="constant">GL_RGBA</code></td><td align="center"><code class="constant">GL_BYTE</code></td><td align="center">s8</td><td align="center">s8</td><td align="center">s8</td><td align="center">s8</td><td align="center"> </td><td align="center"> </td><td align="center">Y</td></tr><tr><td align="center"><code class="constant">GL_RGB5_A1</code></td><td align="center"><code class="constant">GL_RGBA</code></td><td align="center"><code class="constant">GL_UNSIGNED_BYTE</code>,<p><code class="constant">GL_UNSIGNED_SHORT_5_5_5_1</code>,</p>
			<code class="constant">GL_UNSIGNED_INT_2_10_10_10_REV</code></td><td align="center">5</td><td align="center">5</td><td align="center">5</td><td align="center">1</td><td align="center"> </td><td align="center">Y</td><td align="center">Y</td></tr><tr><td align="center"><code class="constant">GL_RGBA4</code></td><td align="center"><code class="constant">GL_RGBA</code></td><td align="center"><code class="constant">GL_UNSIGNED_BYTE</code>,<p><code class="constant">GL_UNSIGNED_SHORT_4_4_4_4</code></p></td><td align="center">4</td><td align="center">4</td><td align="center">4</td><td align="center">4</td><td align="center"> </td><td align="center">Y</td><td align="center">Y</td></tr><tr><td align="center"><code class="constant">GL_RGB10_A2</code></td><td align="center"><code class="constant">GL_RGBA</code></td><td align="center"><code class="constant">GL_UNSIGNED_INT_2_10_10_10_REV</code></td><td align="center">10</td><td align="center">10</td><td align="center">10</td><td align="center">2</td><td align="center"> </td><td align="center">Y</td><td align="center">Y</td></tr><tr><td align="center"><code class="constant">GL_RGBA16F</code></td><td align="center"><code class="constant">GL_RGBA</code></td><td align="center"><code class="constant">GL_HALF_FLOAT</code>,<p><code class="constant">GL_FLOAT</code></p></td><td align="center">f16</td><td align="center">f16</td><td align="center">f16</td><td align="center">f16</td><td align="center"> </td><td align="center"> </td><td align="center">Y</td></tr><tr><td align="center"><code class="constant">GL_RGBA32F</code></td><td align="center"><code class="constant">GL_RGBA</code></td><td align="center"><code class="constant">GL_FLOAT</code></td><td align="center">f32</td><td align="center">f32</td><td align="center">f32</td><td align="center">f32</td><td align="center"> </td><td align="center"> </td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_RGBA8UI</code></td><td align="center"><code class="constant">GL_RGBA_INTEGER</code></td><td align="center"><code class="constant">GL_UNSIGNED_BYTE</code></td><td align="center">ui8</td><td align="center">ui8</td><td align="center">ui8</td><td align="center">ui8</td><td align="center"> </td><td align="center">Y</td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_RGBA8I</code></td><td align="center"><code class="constant">GL_RGBA_INTEGER</code></td><td align="center"><code class="constant">GL_BYTE</code></td><td align="center">i8</td><td align="center">i8</td><td align="center">i8</td><td align="center">i8</td><td align="center"> </td><td align="center">Y</td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_RGB10_A2UI</code></td><td align="center"><code class="constant">GL_RGBA_INTEGER</code></td><td align="center"><code class="constant">GL_UNSIGNED_INT_2_10_10_10_REV</code></td><td align="center">ui10</td><td align="center">ui10</td><td align="center">ui10</td><td align="center">ui2</td><td align="center"> </td><td align="center">Y</td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_RGBA16UI</code></td><td align="center"><code class="constant">GL_RGBA_INTEGER</code></td><td align="center"><code class="constant">GL_UNSIGNED_SHORT</code></td><td align="center">ui16</td><td align="center">ui16</td><td align="center">ui16</td><td align="center">ui16</td><td align="center"> </td><td align="center">Y</td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_RGBA16I</code></td><td align="center"><code class="constant">GL_RGBA_INTEGER</code></td><td align="center"><code class="constant">GL_SHORT</code></td><td align="center">i16</td><td align="center">i16</td><td align="center">i16</td><td align="center">i16</td><td align="center"> </td><td align="center">Y</td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_RGBA32I</code></td><td align="center"><code class="constant">GL_RGBA_INTEGER</code></td><td align="center"><code class="constant">GL_UNSIGNED_INT</code></td><td align="center">i32</td><td align="center">i32</td><td align="center">i32</td><td align="center">i32</td><td align="center"> </td><td align="center">Y</td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_RGBA32UI</code></td><td align="center"><code class="constant">GL_RGBA_INTEGER</code></td><td align="center"><code class="constant">GL_INT</code></td><td align="center">ui32</td><td align="center">ui32</td><td align="center">ui32</td><td align="center">ui32</td><td align="center"> </td><td align="center">Y</td><td align="center"> </td></tr></tbody></table><p></p><table summary="Sized Internal Formats" border="1"><colgroup><col align="center" /><col align="center" /><col align="center" /><col align="center" /><col align="center" /></colgroup><thead><tr><th align="center"><span class="bold"><strong>
            Sized Internal Format
            </strong></span></th><th align="center"><span class="bold"><strong>
            Format
            </strong></span></th><th align="center"><span class="bold"><strong>
            Type
            </strong></span></th><th align="center"><span class="bold"><strong>
            Depth Bits
            </strong></span></th><th align="center"><span class="bold"><strong>
            Stencil Bits
            </strong></span></th></tr></thead><tbody><tr><td align="center"><code class="constant">GL_DEPTH_COMPONENT16</code></td><td align="center"><code class="constant">GL_DEPTH_COMPONENT</code></td><td align="center"><code class="constant">GL_UNSIGNED_SHORT</code>,<p><code class="constant">GL_UNSIGNED_INT</code></p></td><td align="center">16</td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_DEPTH_COMPONENT24</code></td><td align="center"><code class="constant">GL_DEPTH_COMPONENT</code></td><td align="center"><code class="constant">GL_UNSIGNED_INT</code></td><td align="center">24</td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_DEPTH_COMPONENT32F</code></td><td align="center"><code class="constant">GL_DEPTH_COMPONENT</code></td><td align="center"><code class="constant">GL_FLOAT</code></td><td align="center">f32</td><td align="center"> </td></tr><tr><td align="center"><code class="constant">GL_DEPTH24_STENCIL8</code></td><td align="center"><code class="constant">GL_DEPTH_STENCIL</code></td><td align="center"><code class="constant">GL_UNSIGNED_INT_24_8</code></td><td align="center">24</td><td align="center">8</td></tr><tr><td align="center"><code class="constant">GL_DEPTH32F_STENCIL8</code></td><td align="center"><code class="constant">GL_DEPTH_STENCIL</code></td><td align="center"><code class="constant">GL_FLOAT_32_UNSIGNED_INT_24_8_REV</code></td><td align="center">f32</td><td align="center">8</td></tr></tbody></table></div></div><p><br class="table-break" />
        </p><p>
            </p><div class="table"><a id="idp8838480"></a><p class="title"><b>Table 2. Compressed Internal Formats</b></p><div class="table-contents"><table summary="Compressed Internal Formats" border="1"><colgroup><col align="center" /><col align="center" /><col align="center" /></colgroup><thead><tr><th align="center"><span class="bold"><strong>
            Compressed Internal Format
            </strong></span></th><th align="center"><span class="bold"><strong>
            Base Internal Format
            </strong></span></th><th align="center"><span class="bold"><strong>
            Image Size
            </strong></span></th></tr></thead><tbody><tr><td align="center"><code class="constant">GL_COMPRESSED_R11_EAC</code></td><td align="center"><code class="constant">GL_RED</code></td><td align="center"><code class="constant">ceil(<em class="parameter"><code>width</code></em>/4) * ceil(<em class="parameter"><code>height</code></em>/4) * 8</code></td></tr><tr><td align="center"><code class="constant">GL_COMPRESSED_SIGNED_R11_EAC</code></td><td align="center"><code class="constant">GL_RED</code></td><td align="center"><code class="constant">ceil(<em class="parameter"><code>width</code></em>/4) * ceil(<em class="parameter"><code>height</code></em>/4) * 8</code></td></tr><tr><td align="center"><code class="constant">GL_COMPRESSED_RG11_EAC</code></td><td align="center"><code class="constant">GL_RG</code></td><td align="center"><code class="constant">ceil(<em class="parameter"><code>width</code></em>/4) * ceil(<em class="parameter"><code>height</code></em>/4) * 16</code></td></tr><tr><td align="center"><code class="constant">GL_COMPRESSED_SIGNED_RG11_EAC</code></td><td align="center"><code class="constant">GL_RG</code></td><td align="center"><code class="constant">ceil(<em class="parameter"><code>width</code></em>/4) * ceil(<em class="parameter"><code>height</code></em>/4) * 16</code></td></tr><tr><td align="center"><code class="constant">GL_COMPRESSED_RGB8_ETC2</code></td><td align="center"><code class="constant">GL_RGB</code></td><td align="center"><code class="constant">ceil(<em class="parameter"><code>width</code></em>/4) * ceil(<em class="parameter"><code>height</code></em>/4) * 8</code></td></tr><tr><td align="center"><code class="constant">GL_COMPRESSED_SRGB8_ETC2</code></td><td align="center"><code class="constant">GL_RGB</code></td><td align="center"><code class="constant">ceil(<em class="parameter"><code>width</code></em>/4) * ceil(<em class="parameter"><code>height</code></em>/4) * 8</code></td></tr><tr><td align="center"><code class="constant">GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2</code></td><td align="center"><code class="constant">GL_RGBA</code></td><td align="center"><code class="constant">ceil(<em class="parameter"><code>width</code></em>/4) * ceil(<em class="parameter"><code>height</code></em>/4) * 8</code></td></tr><tr><td align="center"><code class="constant">GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2</code></td><td align="center"><code class="constant">GL_RGBA</code></td><td align="center"><code class="constant">ceil(<em class="parameter"><code>width</code></em>/4) * ceil(<em class="parameter"><code>height</code></em>/4) * 8</code></td></tr><tr><td align="center"><code class="constant">GL_COMPRESSED_RGBA8_ETC2_EAC</code></td><td align="center"><code class="constant">GL_RGBA</code></td><td align="center"><code class="constant">ceil(<em class="parameter"><code>width</code></em>/4) * ceil(<em class="parameter"><code>height</code></em>/4) * 16</code></td></tr><tr><td align="center"><code class="constant">GL_COMPRESSED_SRGBA8_ETC2_EAC</code></td><td align="center"><code class="constant">GL_RGBA</code></td><td align="center"><code class="constant">ceil(<em class="parameter"><code>width</code></em>/4) * ceil(<em class="parameter"><code>height</code></em>/4) * 16</code></td></tr></tbody></table></div></div><p><br class="table-break" />
        </p></div><div class="refsect1" title="Errors"><a id="errors"></a><h2>Errors</h2><p>
            <code class="constant">GL_INVALID_OPERATION</code> is generated if the default texture object is curently bound to <em class="parameter"><code>target</code></em>.
        </p><p>
            <code class="constant">GL_INVALID_OPERATION</code> is generated if the texture object curently bound to <em class="parameter"><code>target</code></em> 
			already has <code class="constant">GL_TEXTURE_IMMUTABLE_FORMAT</code> set to <code class="constant">GL_TRUE</code>.
        </p><p>
            <code class="constant">GL_INVALID_ENUM</code> is generated if <em class="parameter"><code>internalformat</code></em> is not a
            valid sized internal format.
        </p><p>
            <code class="constant">GL_INVALID_ENUM</code> is generated if <em class="parameter"><code>target</code></em> is not
            one of the accepted target enumerants.
        </p><p>
            <code class="constant">GL_INVALID_VALUE</code> is generated if <em class="parameter"><code>width</code></em>, <em class="parameter"><code>height</code></em> or 
			<em class="parameter"><code>levels</code></em> are less than 1.
        </p><p>
            <code class="constant">GL_INVALID_OPERATION</code> is generated if <em class="parameter"><code>levels</code></em> is greater than <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
  <mml:mrow>
    <mml:mfenced open="⌊" close="⌋">
      <mml:mrow>
        <mml:msub>
          <mml:mi>log</mml:mi>
          <mml:mn>2</mml:mn>
        </mml:msub>
        <mml:mfenced open="(" close=")">
          <mml:mrow>
            <mml:mi>max</mml:mi>
            <mml:mfenced open="(" close=")">
              <mml:mrow>
                <mml:mi>width</mml:mi>
                <mml:mo>,</mml:mo>
                <mml:mtext fontfamily="Times New Roman"> </mml:mtext>
                <mml:mi>height</mml:mi>
              </mml:mrow>
            </mml:mfenced>
          </mml:mrow>
        </mml:mfenced>
      </mml:mrow>
    </mml:mfenced>
    <mml:mo>+</mml:mo>
    <mml:mn>1</mml:mn>
  </mml:mrow>
</mml:math>.
    </p></div><div class="refsect1" title="See Also"><a id="seealso"></a><h2>See Also</h2><p>
            <a class="citerefentry" href="glTexImage2D.xml"><span class="citerefentry"><span class="refentrytitle">glTexImage2D</span></span></a>,
            <a class="citerefentry" href="glCompressedTexImage2D.xml"><span class="citerefentry"><span class="refentrytitle">glCompressedTexImage2D</span></span></a>,
            <a class="citerefentry" href="glTexStorage3D.xml"><span class="citerefentry"><span class="refentrytitle">glTexStorage3D</span></span></a>.
        </p></div><div class="refsect1" title="Copyright"><a id="Copyright"></a><h2>Copyright</h2><p>
            Copyright <span class="trademark"></span>© 2011-2012 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.
            <a class="ulink" href="http://opencontent.org/openpub/" target="_top">http://opencontent.org/openpub/</a>.
        </p></div></div></body></html>
