Полная математическая библиотека для использования в OpenGL ES 2.0 Game? [закрыто]

14

Вам известна полная (или почти полная) кроссплатформенная математическая библиотека для использования в играх OpenGL ES 2.0?

Библиотека должна содержать:

  • Matrix2x2, Matrix 3x3, Matrix4x4 классы
  • Кватернионы
  • Классы Vector2, Vector3, Vector4
  • Угол Эйлера
  • Операции среди вышеупомянутых классов, преобразования и т. Д.
  • Стандартно используемые математические операции в 3D-графике (Dot Product, Cross Product, SLERP и т. Д.)

Есть ли такой математический API, доступный или отдельно или как часть какого-либо пакета ?

Язык программирования: Visual C ++, но планируется перенести на OS X и Android OS.

Bunkai.Satori
источник
Связанный с этим вопрос : gamedev.stackexchange.com/questions/12601/simd-c-library/12606
legends2k
На данный момент не существует идеальной математической библиотеки, я просто попытался написать несколько требований, и у них просто нет библиотеки, но в реальности мне бы хотелось, чтобы кто-нибудь сделал библиотеку проще, чем GLM, с такими же функциями, как у шейдеров + стиль математической библиотеки Ogre. и некоторые из его функциональных возможностей (что GLM не похож на усеченный вид, ограничивающие рамки и т. д.) Также обратите внимание, что GLM не такой быстрый (в действительности это не имеет значения), поэтому я сомневаюсь, что кто-то будет использовать его в raytracers или интенсивных вещах, скорее полезный из-за его API и стиля дизайна
GameDeveloper

Ответы:

14

Рассматривали ли вы настраиваемую математическую библиотеку ?

user1430
источник
+1 @ Джош: Спасибо за хороший совет. В настоящее время я рассматриваю GLM ( glm.g-truc.net ) библиотеку GL Math. Я буду ждать, чтобы увидеть, какие библиотеки люди уже попробовали и зарекомендовали себя как хорошие.
Bunkai.Satori
3
Я настоятельно рекомендую GLM. Я использую это и его "удивительное"
brainydexter
+1, мне очень нравится CML, и я бы написал это как ответ =). Однако он во многом зависит от оптимизаций компилятора, поскольку он универсален и основан на шаблонах. Если вы ориентируетесь на мобильное устройство (вероятно, как вы указали в ES), возможно, некоторая другая математическая библиотека может быть лучше оптимизирована для этой цели.
Яри ​​Комппа
Привет, Брейни, Яри, спасибо за твои комментарии. Я все еще хотел бы видеть, есть ли еще варианты с доступными отзывами пользователей, поэтому я хотел бы оставить этот вопрос открытым некоторое время.
Bunkai.Satori
@Jari - что входит в обсуждение оптимизации математической библиотеки для платформы OpenGL ES? Я имею в виду, если формулы и типы данных спроектированы правильно, что еще можно сделать для оптимизации библиотеки для платформы ES? (Это может быть элементарный вопрос, но у меня нет ответа на этот вопрос.)
Bunkai.Satori
8

Eigen - математическая библиотека только для заголовков C ++, которая поддерживает векторизацию SSE, AltiVec и ARM Neon.

Саймон Лэйси
источник
+1 за отличный совет. Привет Саймон, спасибо за отличный совет. Я начал использовать GLM (OpenGL Math Library), и это довольно удивительно. Он содержит все, от вектора, матрицы, математики кватернионов, интерполяций SLERP и т. Д. До сих пор он предлагает больше, чем мне действительно нужно, поэтому я доволен этим на данный момент.
Bunkai.Satori
6

Вот 2:

  1. Sony Vectormath
  2. Линейное вооружение Пули
Майк Земдер
источник
+1 за хорошие советы. Привет Майк, спасибо за ваши комментарии. На мой взгляд, второй может быть полезен, особенно когда в игру интегрирована Bullet Physics. Моя игра будет использовать Bullet Physics, но, к сожалению, я начал использовать GLM, поэтому я попытаюсь придерживаться GLM.
Bunkai.Satori
4

Я работал над добавлением Apple GLKMath к этому тесту (фактически разветвил этот форк )

Вот результат на моем iPod Touch 4-го поколения :

Eigen:
Additions: 77624 milliseconds.
Multiplications: 227179 milliseconds.

GLM:
Additions: 23935 milliseconds.
Multiplications: 80599 milliseconds.

CML:
Additions: 102390 milliseconds.
Multiplications: 161059 milliseconds.

GLKMath:
Additions: 8526 milliseconds.
Multiplications: 21775 milliseconds.

Вот мой код

У меня нет устройства Android, но мне интересно, как GLKMath будет работать на Android.

chunkyguy
источник