glTexImage2D函数
原型:
glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
实例:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, checkImageWidth, checkImageHeight,
0, GL_RGBA, GL_UNSIGNED_BYTE, checkImage);
解释:
glTexImage2D — specify a two-dimensional texture image,传输数据到GPU中且创建一个纹理对象
。
target参数是创建的纹理类型:
可以是GL_TEXTURE_2D, GL_TEXTURE_1D, GL_TEXTURE_3D
GL_TEXTURE_1D_ARRAY; GL_PROXY_TEXTURE_1D_ARRAY;在 OGL 3.0以上才可用。
level参数是mipmap的等级,表示多种分辨率的图像,如果只有一种那么就是0。
internalformat
确定哪些成分(RGBA,深度,亮度或强度)被选定为图像的纹理单元,这些预定义的符号都表明了纹理单元值应该被规范化(映射到[0,1])范围内,并且存储到一个定点的表示中(如果标记名中包含了一个数值,它指定了位数)。可以是下面的数值:
#define GL_COLOR_INDEX 0x1900
#define GL_STENCIL_INDEX 0x1901
#define GL_DEPTH_COMPONENT 0x1902
#define GL_RED 0x1903
#define GL_GREEN 0x1904
#define GL_BLUE 0x1905
#define GL_ALPHA 0x1906
#define GL_RGB 0x1907
#define GL_RGBA 0x1908
#define GL_LUMINANCE 0x1909
#define GL_LUMINANCE_ALPHA 0x190A
在OGL 3.0后internalformat可以指定为浮点数的,也就是不是规范化的。
在这里可以指定纹理的压缩,存储为特定的压缩纹理格式。例如: