GLSL函数packSnorm2x16文档
该函数将两个标准化的浮点数 (-1.0 到 1.0) 打包成一个 16 bit 的无符号整数类型。其中,第一个浮点数转换为 16 bit 有符号固定点数,第二个浮点数转换为 16 bit 有符号固定点数,最终将它们拼成一个 32 bit 无符号整数。
声明
uint packSnorm2x16(vec2 v)
参数
- v :调用函数时传入的参数,类型为 vec2。包含两个需要打包成无符号整数类型的标准化浮点数。
返回值
注意事项
- 该函数可以用于压缩两个浮点数到一个 32 bit 无符号整数类型中,便于传输和储存。
- 该函数打包的两个浮点数必须在标准化范围内,否则可能出现错误。
- packSnorm2x16 函数返回的无符号整数类型可以用于 glTexImage2D 函数的 format 参数。
示例
下面的代码示例演示了如何使用 packSnorm2x16 函数:
vec2 input = vec2(0.5, -0.3);
uint output = packSnorm2x16(input);
算法
该函数操作的算法如下:
- 将第一个浮点数乘以 32767.0,并且将其向下取整得到有符号 16 bit 固定点数。
- 将第二个浮点数乘以 32767.0,并且将其向下取整得到有符号 16 bit 固定点数。
- 最终将两个有符号固定点数拼成一个 32 bit 的无符号整数类型。其中,前 16 bit 存储第一个数,后 16 bit 存储第二个数。
参考链接