Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vulkan标准化值公式(例如VK_格式_R8_UNORM)?_Vulkan - Fatal编程技术网

Vulkan标准化值公式(例如VK_格式_R8_UNORM)?

Vulkan标准化值公式(例如VK_格式_R8_UNORM)?,vulkan,Vulkan,在Vulkan中,VK\u format\u R8\u UNORM等格式将[0.0f,1.0f]范围内的单精度浮点映射为8位无符号整数。float->uint8\t方向的公式是否准确 uint8_t unorm(float x) { return roundf(x*255.0f); } 标准的C函数在哪里?还是别的什么?还是定义了实现 (请注意,上面给出的uint8_t(0)和uint8_t(255)的值是其他值uint8_t(1)、uint8_t(2)到uint8_t(254)的值的一半

在Vulkan中,
VK\u format\u R8\u UNORM
等格式将
[0.0f,1.0f]
范围内的单精度浮点映射为8位无符号整数。float->uint8\t方向的公式是否准确

uint8_t unorm(float x) {
  return roundf(x*255.0f);
}
标准的C函数在哪里?还是别的什么?还是定义了实现


(请注意,上面给出的uint8_t(0)和uint8_t(255)的值是其他值uint8_t(1)、uint8_t(2)到uint8_t(254)的值的一半)。

来自3.9.2。从浮点到规范化定点的转换

从浮点值f到相应的无符号规范化定点值c的转换是通过首先将f钳制到范围[0,1],然后计算

c=f×(2b-1),b)

其中convertFloatToUint(r,b)返回两个无符号二进制整数值中的一个,其中正好有b位最接近浮点值r。实现应该四舍五入。如果r等于整数,则必须返回该整数值。特别是,如果f等于0.0或1.0,则c必须分别指定为0或2b-1


标准。或者至少,尽可能清楚,同时仍然让具体的机制由实现来定义。@Nicolas:谢谢,这就是我想要的。