浮点数到 XR_BIAS 转换规则

本部分仅适用于 Windows 7 及更高版本的作系统。

以下规则适用于将 float 转换为XR_BIAS。 在这些规则中,假设起始浮点值为 c。

  • 如果 c 为 NaN,则结果为 0;否则,将应用以下规则。 NaN 表示“不是数字”,这意味着表示以浮点格式不可用的值的符号实体。

  • 执行以下作,从浮点刻度转换为整数刻度:

    c = c * 510

    上述作可能会引发溢出。

  • 对偏差执行以下作:

    c = c + 384

    上述作可能会引发溢出。

  • 根据 c 的指数执行以下作之一来固定:

    如果 c 的指数大于或等于 2(>= 2 或 c 为 INF),则结果为 0x3ff,这大致相当于 1.2529。

    如果 c 的指数小于 0(< 0 或 c 为 -INF),则结果为 0x0,表示大约 -0.7529。

  • 将 c 的 mantissa 的最大有效 10 位解释为结果。

允许在 XR 端将浮点数转换为 XR_BIAS 0.6f Unit-Last-Place(ULP)。 此容差意味着在从 float 转换为 XR 后,允许将支持表示的目标格式值的 0.6f ULP 中的任何值映射到该值。 请注意,无限精确结果的 1 个 ULP 意味着,例如,允许实现将结果截断为 32 位,而不是执行舍入到最接近的偶数,因为这样会导致在浮点数中表示的最后一个单位(最小有效)位置的最多一个单位的错误。

对反转数据的标准 Direct3D 版本 10 要求也适用。