<?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" /><title>glTexImage2D</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /></head><body><div class="refentry" lang="en" xml:lang="en"><a id="glTexImage2D"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>glTexImage2D — specify a two-dimensional texture image</p></div><div class="refsynopsisdiv"><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">glTexImage2D</b>(</code></td><td>GLenum <var class="pdparam">target</var>, </td></tr><tr><td> </td><td>GLint <var class="pdparam">level</var>, </td></tr><tr><td> </td><td>GLint <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>, </td></tr><tr><td> </td><td>GLint <var class="pdparam">border</var>, </td></tr><tr><td> </td><td>GLenum <var class="pdparam">format</var>, </td></tr><tr><td> </td><td>GLenum <var class="pdparam">type</var>, </td></tr><tr><td> </td><td>const GLvoid * <var class="pdparam">data</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><p>
    </p><div class="refsect1" lang="en" xml:lang="en"><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>
                    Specifies the target texture of the active texture unit.
                    Must be <code class="constant">GL_TEXTURE_2D</code>,
                    <code class="constant">GL_TEXTURE_CUBE_MAP_POSITIVE_X</code>,
                    <code class="constant">GL_TEXTURE_CUBE_MAP_NEGATIVE_X</code>,
                    <code class="constant">GL_TEXTURE_CUBE_MAP_POSITIVE_Y</code>,
                    <code class="constant">GL_TEXTURE_CUBE_MAP_NEGATIVE_Y</code>,
                    <code class="constant">GL_TEXTURE_CUBE_MAP_POSITIVE_Z</code>, or
                    <code class="constant">GL_TEXTURE_CUBE_MAP_NEGATIVE_Z</code>.
                </p></dd><dt><span class="term"><em class="parameter"><code>level</code></em></span></dt><dd><p>
                    Specifies the level-of-detail number.
                    Level 0 is the base image level.
                    Level <span class="emphasis"><em>n</em></span> is the <span class="emphasis"><em>n</em></span>th mipmap reduction image.
                </p></dd><dt><span class="term"><em class="parameter"><code>internalformat</code></em></span></dt><dd><p>
                    Specifies the internal format of the texture.
                    Must be one of the following symbolic constants:
                    <code class="constant">GL_ALPHA</code>,
                    <code class="constant">GL_LUMINANCE</code>,
                    <code class="constant">GL_LUMINANCE_ALPHA</code>,
                    <code class="constant">GL_RGB</code>,
                    <code class="constant">GL_RGBA</code>.
                </p></dd><dt><span class="term"><em class="parameter"><code>width</code></em></span></dt><dd><p>
                    Specifies the width of the texture image.
                    All implementations support 2D texture images that are at least 64 texels
                    wide and cube-mapped texture images that are at least 16 texels wide.
                </p></dd><dt><span class="term"><em class="parameter"><code>height</code></em></span></dt><dd><p>
                    Specifies the height of the texture image
                    All implementations support 2D texture images that are at least 64 texels
                    high and cube-mapped texture images that are at least 16 texels high.
                </p></dd><dt><span class="term"><em class="parameter"><code>border</code></em></span></dt><dd><p>
                    Specifies the width of the border.
                    Must be 0.
                </p></dd><dt><span class="term"><em class="parameter"><code>format</code></em></span></dt><dd><p>
                    Specifies the format of the texel data.  Must match <em class="parameter"><code>internalformat</code></em>.
                    The following symbolic values are accepted:
                    <code class="constant">GL_ALPHA</code>,
                    <code class="constant">GL_RGB</code>,
                    <code class="constant">GL_RGBA</code>,
                    <code class="constant">GL_LUMINANCE</code>, and
                    <code class="constant">GL_LUMINANCE_ALPHA</code>.
                </p></dd><dt><span class="term"><em class="parameter"><code>type</code></em></span></dt><dd><p>
                    Specifies the data type of the texel data.
                    The following symbolic values are accepted:
                    <code class="constant">GL_UNSIGNED_BYTE</code>,
                    <code class="constant">GL_UNSIGNED_SHORT_5_6_5</code>,
                    <code class="constant">GL_UNSIGNED_SHORT_4_4_4_4</code>, and
                    <code class="constant">GL_UNSIGNED_SHORT_5_5_5_1</code>.
                </p></dd><dt><span class="term"><em class="parameter"><code>data</code></em></span></dt><dd><p>
                    Specifies a pointer to the image data in memory.
                </p></dd></dl></div></div><div class="refsect1" lang="en" xml:lang="en"><a id="description"></a><h2>Description</h2><p>
            Texturing maps a portion of a specified texture image 
            onto each graphical primitive for which texturing is
            active.  Texturing is active when the current fragment shader or
            vertex shader makes use of built-in texture lookup 
            functions.
        </p><p>
            To define texture images, call <code class="function">glTexImage2D</code>.
            The arguments describe the parameters of the texture image,
            such as height,
            width,
            level-of-detail number
            (see <a class="citerefentry" href="glTexParameter.xml"><span class="citerefentry"><span class="refentrytitle">glTexParameter</span></span></a>),
            and format.
            The last three arguments describe how the image is represented in memory.
        </p><p>
            Data is read from <em class="parameter"><code>data</code></em> as a sequence of unsigned bytes or shorts,
            depending on <em class="parameter"><code>type</code></em>.
            When <em class="parameter"><code>type</code></em> is <code class="constant">GL_UNSIGNED_BYTE</code>, 
            each of the bytes is interpreted as one color component.
            When <em class="parameter"><code>type</code></em> is one of 
            <code class="constant">GL_UNSIGNED_SHORT_5_6_5</code>, <code class="constant">GL_UNSIGNED_SHORT_4_4_4_4</code>, or
            <code class="constant">GL_UNSIGNED_SHORT_5_5_5_1</code>, each unsigned short value is interpreted as
            containing all the components for a single texel, with the color
            components arranged according to <em class="parameter"><code>format</code></em>.
            Color components are treated as groups of one, two, three, or four
            values, again based on <em class="parameter"><code>format</code></em>. Groups of
            components are referred to as texels.
        </p><p>
            <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
                
                <mml:mrow>
                    <mml:mi mathvariant="italic">width</mml:mi>
                    <mml:mo>×</mml:mo>
                    <mml:mi mathvariant="italic">height</mml:mi>
                </mml:mrow>
            </mml:math>
            texels are read from memory,
            starting at location <em class="parameter"><code>data</code></em>.
            By default, these texels are taken from adjacent memory locations,
            except that after all <em class="parameter"><code>width</code></em> texels are read,
            the read pointer is advanced to the next four-byte boundary.
            The four-byte row alignment is specified by <a class="citerefentry" href="glPixelStorei.xml"><span class="citerefentry"><span class="refentrytitle">glPixelStorei</span></span></a> with
            argument <code class="constant">GL_UNPACK_ALIGNMENT</code>,
            and it can be set to one, two, four, or eight bytes.
        </p><p>
            The first element corresponds to the lower left corner of the texture
            image.
            Subsequent elements progress left-to-right through the remaining texels
            in the lowest row of the texture image, and then in successively higher
            rows of the texture image.
            The final element corresponds to the upper right corner of the texture
            image.
        </p><p>
            <em class="parameter"><code>format</code></em> determines the composition of each element in <em class="parameter"><code>data</code></em>.
            It can assume one of these symbolic values:
        </p><div class="variablelist"><dl><dt><span class="term"><code class="constant">GL_ALPHA</code></span></dt><dd><p>
                        Each element is a single alpha component.
                        The GL converts it to floating point and assembles it into an RGBA element
                        by attaching 0 for red, green, and blue.
                        Each component is then clamped to the range [0,1].
                    </p></dd><dt><span class="term"><code class="constant">GL_RGB</code></span></dt><dd><p>
                        Each element is an RGB triple.
                        The GL converts it to floating point and assembles it into an RGBA element
                        by attaching 1 for alpha.
                        Each component is then clamped to the range [0,1].
                    </p></dd><dt><span class="term"><code class="constant">GL_RGBA</code></span></dt><dd><p>
                        Each element contains all four components.  The GL converts it to floating point, then
                        each component is clamped to the range [0,1].
                    </p></dd><dt><span class="term"><code class="constant">GL_LUMINANCE</code></span></dt><dd><p>
                        Each element is a single luminance value.
                        The GL converts it to floating point,
                        then assembles it into an RGBA element by replicating the luminance value
                        three times for red, green, and blue and attaching 1 for alpha.
                        Each component is then clamped to the range [0,1].
                    </p></dd><dt><span class="term"><code class="constant">GL_LUMINANCE_ALPHA</code></span></dt><dd><p>
                        Each element is a luminance/alpha pair.
                        The GL converts it to floating point,
                        then assembles it into an RGBA element by replicating the luminance value
                        three times for red, green, and blue.
                        Each component is then clamped to the range [0,1].
                    </p></dd></dl></div><p>
            Color components are converted to floating point based on the <em class="parameter"><code>type</code></em>.
            When <em class="parameter"><code>type</code></em> is <code class="constant">GL_UNSIGNED_BYTE</code>,
            each component is divided by
            <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
                
                <mml:mrow>
                    <mml:msup><mml:mn>2</mml:mn>
                    <mml:mn>8</mml:mn>
                    </mml:msup>
                    <mml:mo>-</mml:mo>
                    <mml:mn>1</mml:mn>
                </mml:mrow>
            </mml:math>.
            When <em class="parameter"><code>type</code></em> is <code class="constant">GL_UNSIGNED_SHORT_5_6_5</code>,
            <code class="constant">GL_UNSIGNED_SHORT_4_4_4_4</code>, or <code class="constant">GL_UNSIGNED_SHORT_5_5_5_1</code>,
            each component is divided by
            <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
                
                <mml:mrow>
                    <mml:msup><mml:mn>2</mml:mn>
                    <mml:mi>N</mml:mi>
                    </mml:msup>
                    <mml:mo>-</mml:mo>
                    <mml:mn>1</mml:mn>
                </mml:mrow>
            </mml:math>,
            where <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mml:mi mathvariant="italic">N</mml:mi></mml:math> 
            is the number of bits in the bitfield.
        </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="notes"></a><h2>Notes</h2><p>
            <em class="parameter"><code>internalformat</code></em> must match <em class="parameter"><code>format</code></em>.
            No conversion between formats is supported during texture image processing.
            <em class="parameter"><code>type</code></em> may be used as a hint to specify how much
            precision is desired, but a GL implementation may choose to store the texture
            array at any internal resolution it chooses.
        </p><p>
            <em class="parameter"><code>data</code></em> may be a null pointer.
            In this case, texture memory is
            allocated to accommodate a texture of width <em class="parameter"><code>width</code></em> and height <em class="parameter"><code>height</code></em>.
            You can then download subtextures to initialize this
            texture memory.
            The image is undefined if the user tries to apply
            an uninitialized portion of the texture image to a primitive.
        </p><p>
            <code class="function">glTexImage2D</code>
            specifies a two-dimensional or cube-map texture for the current texture unit,
            specified with <a class="citerefentry" href="glActiveTexture.xml"><span class="citerefentry"><span class="refentrytitle">glActiveTexture</span></span></a>.
        </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="errors"></a><h2>Errors</h2><p>
            <code class="constant">GL_INVALID_ENUM</code> is generated if <em class="parameter"><code>target</code></em> is not <code class="constant">GL_TEXTURE_2D</code>,
            <code class="constant">GL_TEXTURE_CUBE_MAP_POSITIVE_X</code>,
            <code class="constant">GL_TEXTURE_CUBE_MAP_NEGATIVE_X</code>,
            <code class="constant">GL_TEXTURE_CUBE_MAP_POSITIVE_Y</code>,
            <code class="constant">GL_TEXTURE_CUBE_MAP_NEGATIVE_Y</code>,
            <code class="constant">GL_TEXTURE_CUBE_MAP_POSITIVE_Z</code>, or 
            <code class="constant">GL_TEXTURE_CUBE_MAP_NEGATIVE_Z</code>.
        </p><p>
            <code class="constant">GL_INVALID_ENUM</code> is generated if <em class="parameter"><code>format</code></em> 
            or <em class="parameter"><code>type</code></em> is not an accepted value.
        </p><p>
            <code class="constant">GL_INVALID_VALUE</code> is generated if <em class="parameter"><code>target</code></em> is one of the six cube map 2D image targets and the width and height parameters are not equal.
        </p><p>
            <code class="constant">GL_INVALID_VALUE</code> is generated if <em class="parameter"><code>level</code></em> is less than 0.
        </p><p>
            <code class="constant">GL_INVALID_VALUE</code> may be generated if <em class="parameter"><code>level</code></em> is greater than 
            <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
                
                <mml:mrow>
                    <mml:msub><mml:mi mathvariant="italic">log</mml:mi>
                    <mml:mn>2</mml:mn>
                    </mml:msub>
                    <mml:mo>⁡</mml:mo>
                    <mml:mfenced open="(" close=")">
                        <mml:mi mathvariant="italic">max</mml:mi>
                    </mml:mfenced>
                </mml:mrow>
            </mml:math>,
            where <span class="emphasis"><em>max</em></span> is the returned value of 
            <code class="constant">GL_MAX_TEXTURE_SIZE</code> when <em class="parameter"><code>target</code></em>
            is <code class="constant">GL_TEXTURE_2D</code> or <code class="constant">GL_MAX_CUBE_MAP_TEXTURE_SIZE</code> when
            <em class="parameter"><code>target</code></em> is not <code class="constant">GL_TEXTURE_2D</code>.
        </p><p>
            <code class="constant">GL_INVALID_VALUE</code> is generated if <em class="parameter"><code>internalformat</code></em> is not an
            accepted format.
        </p><p>
            <code class="constant">GL_INVALID_VALUE</code> is generated if <em class="parameter"><code>width</code></em> or <em class="parameter"><code>height</code></em> is less than 0
            or greater than <code class="constant">GL_MAX_TEXTURE_SIZE</code> when <em class="parameter"><code>target</code></em>
            is <code class="constant">GL_TEXTURE_2D</code> or <code class="constant">GL_MAX_CUBE_MAP_TEXTURE_SIZE</code> when
            <em class="parameter"><code>target</code></em> is not <code class="constant">GL_TEXTURE_2D</code>.
        </p><p>
            <code class="constant">GL_INVALID_VALUE</code> is generated if <em class="parameter"><code>border</code></em> is not 0.
        </p><p>
            <code class="constant">GL_INVALID_OPERATION</code> is generated if <em class="parameter"><code>format</code></em> does
            not match <em class="parameter"><code>internalformat</code></em>.
        </p><p>
            <code class="constant">GL_INVALID_OPERATION</code> is generated if <em class="parameter"><code>type</code></em> is
            <code class="constant">GL_UNSIGNED_SHORT_5_6_5</code>
            and <em class="parameter"><code>format</code></em> is not <code class="constant">GL_RGB</code>.
        </p><p>
            <code class="constant">GL_INVALID_OPERATION</code> is generated if <em class="parameter"><code>type</code></em> is
            <code class="constant">GL_UNSIGNED_SHORT_4_4_4_4</code> or
            <code class="constant">GL_UNSIGNED_SHORT_5_5_5_1</code>
            and <em class="parameter"><code>format</code></em> is not <code class="constant">GL_RGBA</code>.
        </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="associatedgets"></a><h2>Associated Gets</h2><p>
            <a class="citerefentry" href="glGet.xml"><span class="citerefentry"><span class="refentrytitle">glGet</span></span></a>
            with argument <code class="constant">GL_MAX_TEXTURE_SIZE</code> or
            <code class="constant">GL_MAX_CUBE_MAP_TEXTURE_SIZE</code>
        </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="seealso"></a><h2>See Also</h2><p>
            <a class="citerefentry" href="glActiveTexture.xml"><span class="citerefentry"><span class="refentrytitle">glActiveTexture</span></span></a>,
            <a class="citerefentry" href="glCompressedTexImage2D.xml"><span class="citerefentry"><span class="refentrytitle">glCompressedTexImage2D</span></span></a>,
            <a class="citerefentry" href="glCompressedTexSubImage2D.xml"><span class="citerefentry"><span class="refentrytitle">glCompressedTexSubImage2D</span></span></a>,
            <a class="citerefentry" href="glCopyTexImage2D.xml"><span class="citerefentry"><span class="refentrytitle">glCopyTexImage2D</span></span></a>,
            <a class="citerefentry" href="glCopyTexSubImage2D.xml"><span class="citerefentry"><span class="refentrytitle">glCopyTexSubImage2D</span></span></a>,
            <a class="citerefentry" href="glPixelStorei.xml"><span class="citerefentry"><span class="refentrytitle">glPixelStorei</span></span></a>,
            <a class="citerefentry" href="glTexSubImage2D.xml"><span class="citerefentry"><span class="refentrytitle">glTexSubImage2D</span></span></a>,
            <a class="citerefentry" href="glTexParameter.xml"><span class="citerefentry"><span class="refentrytitle">glTexParameter</span></span></a>
        </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="copyright"></a><h2>Copyright</h2><p>
            Copyright <span class="trademark"></span>© 1991-2006
            Silicon Graphics, Inc. This document is licensed under the SGI
            Free Software B License. For details, see
            <a class="ulink" href="http://oss.sgi.com/projects/FreeB/" target="_top">http://oss.sgi.com/projects/FreeB/</a>.
        </p></div></div></body></html>

