glTexImage2D参数
时间: 2023-11-20 08:06:33 浏览: 139
17Text_Texture_2D.rar_opengl 2d
glTexImage2D函数是用来指定一个二维纹理图像的函数。其参数如下:
```C++
void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *data);
```
- target:指定要设置的纹理目标。可以是以下几个值之一:
- GL_TEXTURE_1D:一维纹理。
- GL_TEXTURE_2D:二维纹理。
- GL_TEXTURE_3D:三维纹理。
- GL_TEXTURE_CUBE_MAP_POSITIVE_X:立方体贴图的正 X 面。
- GL_TEXTURE_CUBE_MAP_POSITIVE_Y:立方体贴图的正 Y 面。
- GL_TEXTURE_CUBE_MAP_POSITIVE_Z:立方体贴图的正 Z 面。
- GL_TEXTURE_CUBE_MAP_NEGATIVE_X:立方体贴图的负 X 面。
- GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:立方体贴图的负 Y 面。
- GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:立方体贴图的负 Z 面。
- level:指定要设置的纹理的细节级别。0 表示最底层的细节级别。
- internalformat:指定纹理中每个像素的颜色组件数量和类型。可以是以下几个值之一:
- GL_RED:一个组件,每个组件8位。
- GL_RG:两个组件,每个组件8位。
- GL_RGB:三个组件,每个组件8位。
- GL_RGBA:四个组件,每个组件8位。
- GL_DEPTH_COMPONENT:一个深度值,每个组件16或24位。
- GL_DEPTH_STENCIL:一个深度值和一个模板值,每个组件24或32位。
- width:纹理图像的宽度,以像素为单位。
- height:纹理图像的高度,以像素为单位。
- border:指定纹理边界的宽度。必须为0或1。
- format:指定像素数据的格式。可以是以下几个值之一:
- GL_RED:每个像素一个红色组件。
- GL_RG:每个像素两个组件:红色和绿色。
- GL_RGB:每个像素三个组件:红色、绿色和蓝色。
- GL_RGBA:每个像素四个组件:红色、绿色、蓝色和 alpha 值。
- GL_DEPTH_COMPONENT:每个像素一个深度值。
- GL_DEPTH_STENCIL:每个像素一个深度值和一个模板值。
- type:指定像素数据的类型。可以是以下几个值之一:
- GL_UNSIGNED_BYTE:每个组件8位无符号整数。
- GL_BYTE:每个组件8位有符号整数。
- GL_UNSIGNED_SHORT:每个组件16位无符号整数。
- GL_SHORT:每个组件16位有符号整数。
- GL_UNSIGNED_INT:每个组件32位无符号整数。
- GL_INT:每个组件32位有符号整数。
- GL_FLOAT:每个组件32位浮点数。
- GL_UNSIGNED_BYTE_3_3_2:每个像素3位红色、3位绿色和2位蓝色,以8位无符号整数表示。
- GL_UNSIGNED_SHORT_5_6_5:每个像素5位红色、6位绿色和5位蓝色,以16位无符号整数表示。
- GL_UNSIGNED_SHORT_4_4_4_4:每个像素4位红色、4位绿色、4位蓝色和4位 alpha 值,以16位无符号整数表示。
- GL_UNSIGNED_SHORT_5_5_5_1:每个像素5位红色、5位绿色、5位蓝色和1位 alpha 值,以16位无符号整数表示。
- data:指向包含纹理图像数据的指针。
注意,glTexImage2D函数并不会直接将纹理图像加载到 GPU 内存中。它只是告诉 OpenGL 现在有一个纹理图像,需要分配内存并加载到显存中。实际上,纹理图像的加载是在纹理绑定后调用glTexSubImage2D函数时发生的。
阅读全文