Mono.Simd Vector3 (плавает) отсутствует? - PullRequest
1 голос
/ 27 октября 2009

Привет, я пытаюсь использовать SIMD Моно для обработки координат (X, Y, Z) в моем проекте, но я вижу только поддержку типов Vector2 и Vector4. Кто-нибудь сталкивался с этим раньше, и есть ли обходные пути?

Заранее спасибо.

1 Ответ

4 голосов
/ 27 октября 2009

Это связано с тем, как работают регистры. Вы можете просто использовать Vector4f и установить для части W значение 0 или 1 (в зависимости от того, что вы хотите сделать с вектором), и все будет хорошо.

http://tirania.org/blog/archive/2008/Nov-03.html объясняет:

На x86 процессорах эти инструкции использовать новый банк регистрации (XMM регистры) и может быть настроен на работать на 16 байтов одновременно, используя количество возможных комбинаций:

* 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.
...