我的着色器中有
float my_float;
。
我需要将其字节解释为 int。
我相信他们在 glsl 中有一个名为 floatBitsToInt 的函数,但显然我的 glsl 版本没有它。
我的版本似乎也没有任何位操作运算符。
有什么方法可以让 GLSL 将 float 视为 int 吗?
请记住,我不想将其转换为 int。我想将现有字节视为 int。
我想我问的是有什么方法可以做这样的事情,但没有位操作运算符
int floatToBits(float value) {
// Assuming 32-bit floats
int intValue = int(value); // Cast to int (this is not what you want, but it's a starting point)
int signBit = intValue >> 31; // Extract the sign bit (0 for positive, 1 for negative)
int exponentBits = (intValue >> 23) & 0xFF; // Extract the exponent bits
int mantissaBits = intValue & 0x7FFFFF; // Extract the mantissa bits
// Combine the extracted bits into a single int
int result = (signBit << 31) | (exponentBits << 23) | mantissaBits;
return result;
}
使用
int intValue = floatBitsToInt(value);
将 float 值中的位直接转换为 int,而不进行转换。