Как распаковать формат DEC3N & UDEC3? - PullRequest
0 голосов
/ 20 января 2012

У меня есть небольшой инструмент, который я использую для преобразования некоторых файлов меша. Файлы сетки имеют нормали, хранящиеся в формате DEC3N или UDEC3. Как мне распаковать это на три обычных процессора?

1 Ответ

1 голос
/ 20 января 2012

Это объясняется здесь: http://www.khronos.org/registry/gles/extensions/OES/OES_vertex_type_10_10_10_2.txt

Modifications to table 2.9 (Component conversions)

    Add the following entries:

        GLType                     Conversion of (x, y, z)  Conversion of w
        -------                    ----------------------   ===============
        INT_10_10_10_2_OES        (2c + 1)/(2^10 - 1)       (2c + 1)/(2^2 - 1)
        UNSIGNED_10_10_10_2_OES    c / (2^10 - 1)            c / (2^2 - 1)

Так что, если у вас нормальная 32-битная переменная N с форматом UDEC3, то

x = (float)( (N>>22) / ((1<<10) - 1);
y = (float)( ((N>>12) & ((1<<10)-1)) / ((1<<10) - 1);
z = (float)( ((N>>2)  & ((1<<10)-1)) / ((1<<10) - 1);

Скорее всего, вы захотите распаковать также w и разделить xyz на w.

...