Поделиться через


Правила преобразования с плавающей XR_BIAS

Этот раздел относится только к операционным системам Windows 7 и более поздних версий.

Для преобразования float в XR_BIAS применяются следующие правила. В этих правилах предположим, что начальным значением float является 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.

  • Переосмыслить наиболее значимые 10 битов мантиссы c в качестве результата.

Преобразование float в XR_BIAS допускается допуском 0,6f Unit-Last-Place (ULP) на стороне XR. Этот допуск означает, что после преобразования из float в XR любое значение ULP в 0,6f целевого формата, поддерживающего представление, может сопоставляться с этим значением. Обратите внимание, что 1 ULP бесконечно точного результата означает, что, например, реализация может усечь результаты до 32-разрядной, а не выполнять округление до ближайшего, так как это приведет к ошибке не более одной единицы в последнем (наименее значимом) месте, представленном в число с плавающей запятой.

Также применяется стандартное требование Direct3D версии 10 для инвертирования данных.