0

いくつかのメッシュ ファイルを変換するために使用する小さなツールがあります。メッシュ ファイルには、法線が DEC3N または UDEC3 形式で保存されています。それを3つの通常のフロートCPU側に展開するにはどうすればよいですか?

4

1 に答える 1

1

ここで説明されています: 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)

したがって、UDEC3 形式の 32 ビット変数 N に法線がある場合、

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 で除算します。

于 2012-01-20T01:02:30.277 に答える