(ubyte是unsigned char)
在RGB颜色类中使用浮点值的重点是什么?它能提供更高的准确度吗?太空呢?使用float vs ubyte有什么性能优势/障碍?
答案 0 :(得分:4)
临:
缺点:
答案 1 :(得分:3)
尽管如此,它确实提供了更高的精确度。正如在另一个答案中所提到的,不必转换来回也有好处,这反过来会导致失去中间结果 - 假设你的浮点数为1.0(一个字节为255),并且你乘以0.65。然后将其转换回整数,即166.75 - 但我们将其舍入到166.所以我们失去了0.75。如果我们进行一些进一步的数学运算,误差可能会变大......当然,如果某个中间步骤导致我们的值超过255(1.0)或低于0(0.0),那么完全可以保留新的价值一段时间,然后在需要时“修复”。
当然,您不能在较小的空间(通常)中存储更多数据,因此典型的浮点数比一个字节大4倍。一些GPU具有16位浮点数,其中包含11位尾数和4-5位指数,这使得它们适用于大多数类型的简单像素数学运算。但它仍然是规模的两倍,但不是“精确度”的两倍(我的同事花了很多时间试图使用16位浮点数来匹配32位浮点数的结果,而且从未完全达到过) 。