Подходит ли OpenGL ES для анимации скелета? - PullRequest
5 голосов
/ 21 мая 2011

Мне нужно запустить 3D-проект для мобильных платформ.Прежде всего я бы хотел обозначить главную цель - скелетная анимация .Что касается решения, я думал об OpenGL ES и C ++.Итак, вопросы:

  1. Достаточно ли надежен OpenGL ES для обработки скелетной анимации (включая шейдерные шейдеры)
  2. Широко ли поддерживается OpenGL ES на мобильных платформах, и какие из них наиболее известны?из них?(например, поддерживается ли iPad?)
  3. Возможно ли это в любом случае, я имею в виду, хватит ли мне вычислительной мощности?
  4. Стоит ли использовать математическую библиотеку XNA из-за ее SIMD-оптимизации (хотяЯ действительно не уверен, что SIMD поддерживается на мобильных платформах, но кто знает ...).
  5. Хорошо ли для этого использовать C ++?Если да, то какой компилятор выбрать для разработки и тестирования?Более того, я понятия не имею, какие компиляторы используются для мобильных платформ?

Как вы, возможно, поняли - я еще никогда не программировал для мобильных платформ.Поэтому некоторые общие рекомендации приветствуются.

Ответы [ 2 ]

7 голосов
/ 22 мая 2011

Да, OpenGL ES 2.0 может достаточно хорошо обрабатывать скины вершин для скелетных анимаций. В OpenGL ES 1.1 использовался конвейер с фиксированными функциями без шейдеров, поэтому в старых API это сделать сложнее, но в 2.0 добавлена ​​поддержка шейдеров. OpenGL ES 2.0 присутствует на всех поставляемых устройствах iOS (iPhone 3G S и новее поддерживает его, включая оба iPad), а также почти на всех устройствах Android (я смог найти только пару очень дешевых телефонов, которые этого не сделали). Windows Phone 7 не поддерживает OpenGL ES, но я думаю, что BlackBerry поддерживает.

Если вам это интересно, я настоятельно рекомендую прочитать книгу Филиппа Ридоута " Программирование на iPhone 3D ". Несмотря на то, что в названии у него есть «iPhone», он использует универсальный C ++ почти для всего кода в книге, поэтому он должен хорошо переводиться на другие платформы и должен быть легким для понимания. У него даже есть раздел в главе «Оптимизация» с кодом для выполнения скинования вершин в OpenGL ES 2.0 и даже 1.1. Вы можете взять образец кода для книги здесь , включая демонстрацию этого скина.

C ++ поддерживается на iOS через Objective-C ++ , где вы можете настроить элементы пользовательского интерфейса для платформы в Objective-C, а затем выполнить всю свою логику и логику рендеринга в C ++. Опять же, Филипп делает это в своей книге, и вы можете увидеть в его примерах исходного кода приложения, как он структурирует это. Сотрудники Imagination Technologies также установили некоторые независимые от платформы леса в своем PowerVR SDK , который некоторые люди использовали для быстрой настройки и запуска трехмерного рендеринга на мобильных устройствах. Также в этом SDK содержатся отличные документы о переходе с OpenGL на OpenGL ES, а также о выполнении различных эффектов на этих графических процессорах.

Я слышал, что некоторые люди получают немного лучшую производительность для небольших наборов вершин, выполняя преобразования на процессоре (в iOS это можно сделать с помощью фреймворка Accelerate), но я думаю, что вершинные шейдеры будут намного быстрее для больших геометрия. Графические процессоры PowerVR, с которыми я работал на мобильных устройствах, намного мощнее, чем вы думаете, особенно новый, который поставляется в iPad 2.

Вам понадобится XDE IDE с компилятором GCC или LLVM для таргетинга на устройства iOS, но я считаю, что у Android есть еще несколько вариантов в этом отношении.

2 голосов
/ 21 мая 2011

Короче говоря:

  1. Да, конечно.Почему бы и нет?
  2. Да, я полагаю.Что-то еще?DirectX определенно нет.
  3. Да, я полагаю.Но зависит от того, что еще вы хотите сделать.
  4. Нет, по крайней мере, не только из-за SIMD, поскольку я полагаю, что он не очень поддерживается на мобильных платформах, по крайней мере, для инструкций SIMD, оптимизированных для XNA.
  5. Да, а почему нет?Я думаю, что в основном я использую Objective-C, но для C ++ тоже должны быть компиляторы.Просто спросите Google, так как у меня также нет мобильного опыта.
...