将 float 的字节解释为 glsl 中的 int?

问题描述 投票:0回答:1

我的着色器中有

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;
}
glsl shader
1个回答
0
投票

使用

int intValue = floatBitsToInt(value);

将 float 值中的位直接转换为 int,而不进行转换。

© www.soinside.com 2019 - 2024. All rights reserved.