Лучшая математическая библиотека C ++ для игрового движка? [закрыто]

18

Я ищу быструю математическую библиотеку C ++ с открытым исходным кодом для моего игрового движка со следующими функциями:

  • быстро (сс?)
  • векторы
  • матрицы
  • кватернионы

подходит как для opengl, так и для directx

pragmascript
источник
1
Я не понимаю, почему математическая библиотека все равно будет зависеть от графического API. : P
Коммунистическая Утка
3
afaik opengl использует основные матрицы столбцов и основные строки DirectX. так что было бы неплохо, если бы библиотека поддерживала оба
pragmascript
1
В GL вы всегда можете установить транспонированную матрицу, а в DX вы можете указать макет в шейдерах. Ручная настройка также не имеет большого значения.
Антеру
1
Платформа здесь важна, потому что довольно просто создать математическую библиотеку, которая прекрасно работает на ПК, но ужасна на консоли или наоборот.
Kylotan

Ответы:

11

XNA Math может быть для вас. Это математическая библиотека C ++ только для заголовков, которая распространяется с последним пакетом DirectX SDK и использует встроенные функции SSE. Я не могу много говорить о его производительности, но из того, что я читал об этом, он кажется довольно приличным.

XNA Math Reference

Руководство по программированию XNA Math

DX SDK скачать

РЕДАКТИРОВАТЬ: Я также не уверен в условиях лицензирования. DX SDK Eula заявляет, что «Вторично распространяемый код» не может быть

«работать на платформе, отличной от платформ Windows, Xbox и Windows Mobile»;

Я не совсем уверен, применимо ли это к математике xna, поскольку только пример кода и утилиты явно помечен как «Вторично распространяемый код».

оборота коарл
источник
Я не имею ни малейшего представления об условиях лицензирования XNA, например, можно ли их использовать, например, в операционных системах других производителей. Тем не менее, я однажды использовал математическую библиотеку d3dx (что очень похоже) в проекте программного рендеринга, так что он никоим образом не зависит от DirectX.
Яри ​​Комппа
1
Пояснение: математика d3dx, вероятно, почти то же самое с точки зрения лицензирования - хотя с точки зрения реализации она отличается. Согласно документации SDK, математика d3dx в значительной степени зависит от встраивания и передачи по указателю, тогда как xnamath зависит от SIMD и встроенных функций.
Koarl
14

Мы используем OpenGL Математика

Хотя название подразумевает, что это только для OpenGL, я не вижу причин, по которым он не будет работать для DirectX. Это библиотека только для заголовков, простая в использовании и очень активно обновляемая.

Проверьте это.

Кайл С
источник
2
использует лицензию MIT
Jari Komppa
5

Попробуйте Eigen - быстро, шаблоны выражений, векторизация, проста в использовании и лицензирована в соответствии с MPL2

Anteru
источник
4

Может быть, CML http://www.cmldev.net/

Piotrek
источник
1
Повышение лицензии на программное обеспечение.
Яри ​​Комппа
1

Библиотека векторной графики Sony, используемая как часть Bullet Physics , отвечает всем вашим требованиям. Требуется некоторая работа, чтобы отделить его от Bullet, но ничего серьезного - это не зависит от пули, просто никто никогда официально не упаковывал ее отдельно от нее.

Версия в настоящее время в дереве маркеров поддерживает оптимизацию SSE и имеет интерфейс C ++.

Более старая версия (возможно, теперь не поддерживаемая) также поддерживает форматы SOA и чистый интерфейс C.

user744
источник
1
Похоже на лицензию zlib / libpng.
Яри ​​Комппа
Я заинтересован в этом. Вы упомянули, что какая-то работа связана с разделением, есть ли у вас какие-либо ссылки или другая информация о том, какую работу это влечет за собой?
0

Или, для скорости, http://sourceforge.net/projects/simdx86/ .

ChrisE
источник
3
LGPL, так что это довольно бесполезно. Математическая библиотека должна быть встроенной, так что это в значительной степени заставляет ваш проект быть (L) GPL.
Яри ​​Комппа