GLSL的textureSize()函数用于返回纹理的大小。纹理的大小指的是纹理宽度和高度。该函数通常用于shader中,使shader能够通过指定的纹理单元获取纹理的大小。
ivec2 textureSize(sampler2D sampler, int lod = 0);
ivec3 textureSize(samplerCube sampler, int lod = 0);
sampler
: 用来获取大小的纹理单元,只能是sampler2D
或samplerCube
类型。lod
: 存储纹理细节级别的整数值。默认值为0,表示基本级别。返回一个2维或3维的整数向量,分别包含纹理的宽度和高度(如果是二维纹理),或者是纹理的宽度、高度和面数(如果是立方体纹理)。函数用ivec2
或ivec3
来表示返回的值,并且这些值都是正整数。
以下是使用textureSize()函数的示例:
uniform sampler2D tex;
void main() {
ivec2 size = textureSize(tex);
// 在这里使用size.x 和 size.y 进行一些处理
}
uniform samplerCube tex;
void main() {
ivec3 size = textureSize(tex);
// 在这里使用size.x、size.y 和 size.z进行一些处理
}
sampler2D
参数必须绑定到一个有效的纹理对象上,否则该函数的行为是未定义的。