Mono.Simd Vector3 (плавает) отсутствует?
Вопрос
Эй, я пытаюсь использовать SIMD Моно для обработки координат (X, Y, Z) в моем проекте, но я вижу только поддержку типов Vector2 и Vector4. Кто-нибудь сталкивался с этим раньше, и есть ли обходные пути?
Заранее спасибо.
Решение
Это связано с тем, как работают регистры. Вы можете просто использовать 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.
Не связан с StackOverflow