GLES3.0中文API-glCompressedTexImage3D

名称

glCompressedTexImage3D — 以压缩格式指定三维纹理图像

C 规范

void glCompressedTexImage3D( GLenum target,
GLint level,
GLenum internalformat,
GLsizei width,
GLsizei height,
GLsizei depth,
GLint border,
GLsizei imageSize,
const void * data);

参数

target
指定目标纹理。 必须为GL_TEXTURE_3D或GL_TEXTURE_2D_ARRAY。

level
指定详细级别编号。 级别0是基本图像级别。 级别n是第n个mipmap缩小图像。

internalformat
指定存储在地址数据处的压缩图像数据的格式。

width
指定纹理图像的宽度。

height
指定纹理图像的高度。

depth
指定纹理图像的深度。

border
此值必须为0。

imageSize
指定从data指定的地址开始的图像数据的无符号字节数。

data
指定指向内存中压缩图像数据的指针。

描述

纹理允许着色器读取图像阵列的元素。

如果目标是GL_TEXTURE_3D,则glCompressedTexImage3D会加载先前定义并检索的压缩三维纹理图像(请参阅glTexImage3D)。

如果目标是GL_TEXTURE_2D_ARRAY,则将数据视为压缩的2D纹理数组。

internalformat必须是下表1中的压缩图像格式,或者是扩展名指定的压缩纹理格式。

imageSize必须适合于指定内部格式的宽度,高度和深度。 下表1中给出了单片ETC / EAC的大小。

如果在指定纹理图像时将非零命名的缓冲区对象绑定到GL_PIXEL_UNPACK_BUFFER目标(请参阅glBindBuffer),则将数据视为缓冲区对象的数据存储区中的字节偏移。

表 1. 压缩内部格式

压缩内部格式 基本内部格式 图片大小
GL_COMPRESSED_R11_EAC GL_RED ceil(width/4) * ceil(height/4) * 8
GL_COMPRESSED_SIGNED_R11_EAC GL_RED ceil(width/4) * ceil(height/4) * 8
GL_COMPRESSED_RG11_EAC GL_RG ceil(width/4) * ceil(height/4) * 16
GL_COMPRESSED_SIGNED_RG11_EAC GL_RG ceil(width/4) * ceil(height/4) * 16
GL_COMPRESSED_RGB8_ETC2 GL_RGB ceil(width/4) * ceil(height/4) * 8
GL_COMPRESSED_SRGB8_ETC2 GL_RGB ceil(width/4) * ceil(height/4) * 8
GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 GL_RGBA ceil(width/4) * ceil(height/4) * 8
GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 GL_RGBA ceil(width/4) * ceil(height/4) * 8
GL_COMPRESSED_RGBA8_ETC2_EAC GL_RGBA ceil(width/4) * ceil(height/4) * 16
GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC GL_RGBA ceil(width/4) * ceil(height/4) * 16

错误

GL_COMPRESSED_R11_EAC,GL_COMPRESSED_SIGNED_R11_EAC,GL_COMPRESSED_RG11_EAC,GL_COMPRESSED_SIGNED_RG11_EAC,GL_COMPRESSED_RGB8_ETC2,GL_COMPRESSED_SRGB8_ETC2,GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,GL_COMPRESSED_RGBA8_ETC2_EAC,或GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:如果internalformat不是该特定压缩内部格式之一GL_INVALID_ENUM被生成。

如果imageSize与指定的压缩图像数据的格式,尺寸和内容不一致,则生成GL_INVALID_VALUE。

如果border不为0,则生成GL_INVALID_VALUE。

如果特定纹理压缩扩展中指定的特定压缩内部格式不支持参数组合,则会生成GL_INVALID_OPERATION。 ETC2 / EAC纹理压缩算法仅支持二维图像。如果internalformat是ETC2 / EAC格式,如果目标不是TEXTURE_2D_ARRAY,则glCompressedTexImage3D将生成INVALID_OPERATION错误。

如果将非零缓冲区对象名称绑定到GL_PIXEL_UNPACK_BUFFER目标,并且当前已映射缓冲区对象的数据存储,则将生成GL_INVALID_OPERATION。

如果将非零缓冲区对象名称绑定到GL_PIXEL_UNPACK_BUFFER目标,并且将从缓冲区对象中解压缩数据,从而所需的内存读取将超过数据存储大小,则会生成GL_INVALID_OPERATION。

如果未按照与定义内部压缩格式的扩展规范一致的方式对数据进行编码,则会生成未定义的结果,包括异常的程序终止。

相关Gets

glGet 参数GL_PIXEL_UNPACK_BUFFER_BINDING

API支持版本

函数名 2.0 3.0
glCompressedTexImage3D -

另见

glActiveTexture, glCompressedTexImage2D, glCompressedTexSubImage2D, glCompressedTexSubImage3D, glCopyTexSubImage2D, glCopyTexSubImage3D, glPixelStorei, glTexImage2D, glTexSubImage2D, glTexSubImage3D, glTexParameter

版权

https://www.khronos.org/registry/OpenGL-Refpages/es3.0/html/glCompressedTexImage3D.xhtml
Copyright © 1991-2006 Silicon Graphics, Inc. Copyright © 2010-2014 Khronos Group. This document is licensed under the SGI Free Software B License. For details, see http://oss.sgi.com/projects/FreeB/.

你可能感兴趣的:(openglES3.0)