Mono.Simd Vector3 (flotteurs) manquant?
Question
Heya, j'essaie d'utiliser le SIMD de Mono pour gérer les coordonnées (X, Y, Z) de mon projet, mais je ne vois que le support pour les types Vector2 et Vector4. Quelqu'un at-il déjà rencontré ce problème auparavant et existe-t-il des solutions de rechange?
Merci d'avance.
La solution
Cela est lié à la façon dont les registres fonctionnent. Vous pouvez simplement utiliser Vector4f et définir la partie W
sur 0 ou 1 (selon ce que vous voulez faire avec le vecteur) et tout ira bien.
http://tirania.org/blog/archive/2008/Nov -03.html explique:
Sur les processeurs x86, ces instructions utiliser une nouvelle banque de registres (le XMM registres) et peut être configuré pour travailler sur 16 octets à la fois en utilisant un nombre de combinaisons possibles:
* byte-level operations on 16 elements. * short-level operations on 8 elements. * single precision or integer-level operations on 4 elements. * double precision or long-integer operations on 2 elements.