GLES2.0中文API-glTexImage2D

名称

glTexImage2D- 指定一个二维的纹理图片

C规范

 

void glTexImage2D(GLenum target

                                       GLint level

                                       GLint internalformat

                                       GLsizei width

                                       GLsizei height

                                       GLint border

                                       GLenum format

                                       GLenum type

                                       const GLvoid * data);

参数

target

指定活动纹理单元的目标纹理。必须是GL_TEXTURE_2D,GL_TEXTURE_CUBE_MAP_POSITIVE_X,GL_TEXTURE_CUBE_MAP_NEGATIVE_X,GL_TEXTURE_CUBE_MAP_POSITIVE_Y,GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,GL_TEXTURE_CUBE_MAP_POSITIVE_Z,或GL_TEXTURE_CUBE_MAP_NEGATIVE_Z.

level

    指定细节级别,0级表示基本图像,n级则表示Mipmap缩小n级之后的图像(缩小2^n)

internalformat

    指定纹理内部格式,必须是下列符号常量之一:GL_ALPHA,GL_LUMINANCE,GL_LUMINANCE_ALPHA,GL_RGB,GL_RGBA。

width height

    指定纹理图像的宽高,所有实现都支持宽高至少为64 纹素的2D纹理图像和宽高至少为16 纹素的立方体贴图纹理图像 。

border

    指定边框的宽度。必须为0。

format

    指定纹理数据的格式。必须匹配internalformat。下面的符号值被接受:GL_ALPHA,GL_RGB,GL_RGBA,GL_LUMINANCE,和GL_LUMINANCE_ALPHA。

type

    指定纹理数据的数据类型。下面的符号值被接受:GL_UNSIGNED_BYTE,GL_UNSIGNED_SHORT_5_6_5,GL_UNSIGNED_SHORT_4_4_4_4,和GL_UNSIGNED_SHORT_5_5_5_1。

data

    指定一个指向内存中图像数据的指针。

描述

    纹理将指定纹理图像的一部分映射到纹理化为活动的每个图形基元上。当前片段着色器或顶点着色器使用内置纹理查找函数时,纹理处于活动状态。

    要定义纹理图像,请调用glTexImage2D。参数描述纹理图像的参数,如高度,宽度,细节级别(详见glTexParameter)以及格式。最后三个参数描述了图像在内存中的表示方式。

    数据从data一系列无符号字节或短路中读取,具体取决于type。当type是GL_UNSIGNED_BYTE,每个字节被解释为一个颜色分量。当type是以下当中的一个GL_UNSIGNED_SHORT_5_6_5,GL_UNSIGNED_SHORT_4_4_4_4或GL_UNSIGNED_SHORT_5_5_5_1,各无符号短值被解释为包含所有组件用于单个纹素,利用根据设置在颜色分量format。颜色分量被视为一个,两个,三个或四个值的组,也是基于format。组件组被称为纹理元素(纹素)。

    width × height个纹素将从内存中读取(起始位置就是data的起始地址)。默认情况下,这些纹素是从相邻的内存位置获取的,除了在读取所有width个纹素后,读指针前进到下一个四字节边界。glReadPixels使用参数GL_UNPACK_ALIGNMENT指定四字节行对齐,并且可以将其设置为一个,两个,四个或八个字节。

    第一个元素对应于纹理图像的左下角。后续元素从左到右通过纹理图像的最低行中的剩余纹素进行,然后在纹理图像的连续更高行中进行。 最后一个元素对应于纹理图像的右上角。

    format决定data中每个元素的组成。 它可以是以下符号值之一:

GL_ALPHA

    每个元素都是单个alpha分量。 GL将其转换为浮点并通过将rgb三通道赋值为0组装成RGBA元素。 然后将每个元素的值范围截断于[0,1]。

GL_RGB

    每个元素都是RGB三元组。 GL将其转换为浮点,并通过为alpha赋值为1将其组装成RGBA元素。 然后将每个元素的值范围截断于[0,1]。

GL_RGBA

    每个元素包含所有四个组件。 GL将其转换为浮点,然后将每个元素的值范围截断于[0,1]。

GL_LUMINANCE

    每个元素是单个亮度值。 GL将其转换为浮点,然后通过将亮度值复制三次(红色,绿色和蓝色)并将为alpha赋值为1来将其组合成RGBA元素。然后将每个元素的值范围截断于[0,1]。

GL_LUMINANCE_ALPHA

    每个元素是“亮度-α”对。 GL将其转换为浮点,然后通过将亮度值复制三次(红色,绿色和蓝色)将其组装成RGBA元素。 然后将每个元素的值范围截断于[0,1]。

  颜色组件根据type转换为浮点。当type是GL_UNSIGNED_BYTE时,每个组件除以2 8 - 1。当type为GL_UNSIGNED_SHORT_5_6_5,GL_UNSIGNED_SHORT_4_4_4_4或GL_UNSIGNED_SHORT_5_5_5_1时,每个分量除以2 N-1,其中N是位域中的位数。

注意

internalformat必须匹配format。纹理图像处理期间不支持格式之间的转换。 type可以用作提示来指定所需的精度,但GL实现可以选择以任何内部分辨率存储纹理数组。

data可能是一个空指针。在这种情况下,会分配纹理内存以适应宽度width和高度的纹理height。然后你可以下载子文本来初始化这个纹理内存。如果用户尝试将纹理图像的未初始化部分应用于基元,则图像未定义。

glTexImage2D是用来指定 由glActiveTexture指定的 纹理单元 是二维纹理还是立体贴图纹理的。

错误

GL_INVALID_ENUM:如果target不是GL_TEXTURE_2DGL_TEXTURE_CUBE_MAP_POSITIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_XGL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, GL_TEXTURE_CUBE_MAP_POSITIVE_Z,或 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z。

GL_INVALID_ENUM:如果formattype不是可接受的值。

GL_INVALID_VALUE:如果target是立方体贴图中的一个2维贴图,但是宽和高却不相等。(立方体贴图每个维度都是相等的)

GL_INVALID_VALUE:level比0小。

GL_INVALID_VALUE:如果level大于log以2为低⁡max的对数。(max是target为GL_TEXTURE_2D时GL_MAX_TEXTURE_SIZE的返回值,或者当target不是GL_TEXTURE_2D时GL_MAX_CUBE_MAP_TEXTURE_SIZE的返回值)

GL_INVALID_VALUE:当internalformat是一个不可接收的值。

GL_INVALID_VALUE:当heightwidth的值value或者当target为GL_TEXTURE_2D时value大于GL_MAX_TEXTURE_SIZE,或者当target不为GL_TEXTURE_2D时value大于GL_MAX_CUBE_MAP_TEXTURE_SIZE。

GL_INVALID_VALUE:当border的值不为0时。

GL_INVALID_OPERATION:formatinternalformat不匹配。

GL_INVALID_OPERATION:type是GL_UNSIGNED_SHORT_5_6_5但是format不是GL_RGB。

GL_INVALID_OPERATION:type是GL_UNSIGNED_SHORT_4_4_4_4或者GL_UNSIGNED_SHORT_5_5_5_1但format不是GL_RGBA。

相关Gets

glGet GL_MAX_TEXTURE_SIZE 或GL_MAX_CUBE_MAP_TEXTURE_SIZE

另见

glActiveTexture,glCompressedTexImage2D,glCompressedTexSubImage2D,glCopyTexImage2D,glCopyTexSubImage2D,glPixelStorei,glTexSubImage2D,glTexParameter

版权

https://www.khronos.org/registry/OpenGL-Refpages/es2.0/xhtml/glTexImage2D.xml

https://blog.csdn.net/flycatdeng

Copyright © 1991-2006 Silicon Graphics, Inc.本文档的许可是根据SGI Free Software B License.详见http://oss.sgi.com/projects/FreeB/.

QQ群

你可能感兴趣的:(gles,GLES2.0中文API)