Правила преобразования с плавающей 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 для инвертирования данных.