Сборка под Linux не должна сильно отличаться от варианта под Windows, в силу скриптов автоматизации (об этом ниже).
Требования:
- DirectX June 2010 SDK (опционально)
CMake 3.x - поможет нам настроить проект. Скачиваем либо установщик, либо ZIP архив и кладём программу где хотим. Берём обе версии (win64-x64, win32-x86).
TortoiseHg — бесплатный графический интерфейс для системы контроля версий Mercurial. Так как в O3D, в скриптах инициализации сборки, используется - ставим, будет проще.
Visual Studio 2008 SP1 - 2017 - можно поставить и 2019, но есть небольшая проблема при сборке, чуть позже расскажу. MinGW тоже должен работать, но авторы настоятельно рекомендуют Visual Studio.
DirectX June 2010 SDK - требуется в том случае, если вы хотите собрать D3D11 плагин. Если у вас Win10 и вы установили последнюю версию Visual Studio или сами установили Windows 10 SDK, то ничего более не требуется устанавливать - в них уже содержится последняя версия пакета DirectX SDK (рекомендуемый вариант).
Что стоит учесть ещё?
Требования к Аппаратной (Hardware) и Программной (Software) части.
Требуемая аппаратная часть:
- Всё, что поддерживает DX10 (GeForce 8, 9, 200; AMD Radeon HD 2000-4000) [1]
- Всё, что поддерживает DX11 (GeForce 400-900, 1000; AMD Radeon HD 5000-7000; Radeon R2xx, Vega)
[1] - На момент написания статьи, NVIDIA и AMD прекратили выпуск новых драйверов для карт с DX10. В Windows, используя GL3+ RS (RenderSystem), карты AMD DX10 не имеют ключевых расширений, необходимых для запуска Ogre. Вполне вероятно, что эти карты смогут запускать Ogre 2.1 на Linux с использованием драйверов Mesa намного лучше, чем в Windows; поскольку это проблема драйвера, а не аппаратного обеспечения. Для максимальной совместимости с DX10 и AMD pre-GCN оборудованием используйте D3D11 RS.
Intel всегда имела очень плохую поддержку OpenGL и, в последнее время, похоже, очень быстро перестает выпускать новые драйверы, даже не для столь уж и старых карт. Похоже, что только самые последние модели (Intel HD 4400 и новее) верно работают с GL3+ на Windows. Так что, для Intel, предпочтите выбрать D3D11 RS. А вот с драйверами Mesa, на Linux, как правило, карты Intel работают намного лучше, с несколькими исключениями, такими как Intel HD 2500, у которого есть аппаратные проблемы с sRGB.
Требуемая программная часть:
- Windows XP поддерживается через OpenGL (GL3+)
- Настоятельно рекомендуется использовать Win7 и выше. Также, для Windows Vista и 7, необходимо установить обновление KB2670838 (пользователи также должны будут его установить).
- В Linux настоятельно рекомендуется использовать проприетарные драйверы NVIDIA. Убедитесь, что вы используете самые последние драйверы.
- В Linux, с оборудованием AMD GCN, настоятельно рекомендуется использовать драйверы Mesa ‘radeonsi’, с открытым исходным кодом. Убедитесь, что вы используете последнюю версию Mesa с git (если вы пользуетесь Ubuntu, то проверьте Oibaf’s PPA).
- В Linux, с оборудованием AMD pre-GCN, могут возникнуть некоторые проблемы с некоторыми функциями, такими как Forward+, в основном ошибки компиляции шейдеров ("translation from TGSI failed"). Убедитесь, что вы используете последнюю версию Mesa с git.
- Metal-совместимые устройства iOS поддерживаются с помощью Metal RenderSystem. Для не-Metal-совместимых запланирован порт GLES 2 и GLES 3.
- В настоящее время Ogre 2.1 не работает на Android. Запланирован порт GLES 2 и GLES 3.
- В настоящее время Ogre 2.1 работает на Mac OS X / macOS, используя либо Metal, либо OpenGL. В OpenGL RenderSystem могут возникнуть проблемы с производительностью, очень долгая компиляция шейдеров, отсутствие функциональности (такой как "Compute") или даже глитчи. Начиная с 2018 года, Apple отметила OpenGL как "устарело" в своем семействе ОС. Metal RenderSystem настоятельно рекомендуется по сравнению с GL3+, если вы не нацелены на более старые Mac-системы, которые не поддерживают Metal. Общая поддержка macOS находится в бета-версии.
Какие выводы можно из всего этого сделать? Вы не можете просто так сконцентрироваться лишь на одной RS (RenderSystem). Выбирайте необходимое кол-во в соответствии с планами.
Загрузка Ogre3d SDK и зависимостей
И так, вы скачали всё выше указанное, учли требования и всё подходит, теперь остаётся загрузить Ogre3d SDK и собрать его.
Тут нам помогут автоматизированные скрипты , что сделают большую часть работы за нас ("build_ogre_scripts", выбираем версию v2 - потому что O3D у нас 2.2, для 2.1 берём v1).
После, откройте архив и выберите скрипт относительно вашей среды разработки (IDE) и системы, у меня был "build_ogre_Visual_Studio_16_2019_Win32.bat".
Поместите скрипт в директорию, где должен будет располагаться O3D SDK. Затем откройте его в Текстовом редакторе - мы должны проверить 2 маршрута до CMake 3.x и если они не совпали - поменять.
Сохраняем, закрываем, открываем CMD или "Developer Command Prompt for VS 2019" от администратора. Переходим (cd) в директорию где лежит скрипт, запускаем, начинается сборка, можно идти делать чай, это на несколько минут. По завершению процесса у вас должны появиться 2 папки:
- ogredeps - там у нас будут зависимости (SDL2, zlib, freetype и т.д.). Эту директорию TortoiseHg будет проверять/синхронизировать сам - до актуального состояния (в фоновом режиме работает процесс).
- ogre-next - тут у нас файлы самого O3D SDK.
Также скрипт автоматической сборки создаст решение для VS, его можно найти тут: ogre-next/build/OGRE.sln
Если у вас VS2019, вы можете получить несколько ошибок, которые будут связаны с "СL.exe", там будет мелькать что-то вроде: Done executing task "CL" -- FAILED". Чей именно это косяк - не ясно: кто-то говорит, что компилятора, а кто-то, что надо настройки под VS2019 другие - отключение пункта настроек "precompiled header" у проекта "OgreMain" (в OGRE.sln).
Вот и всё, переходим в "ogre-next\build\bin" и выбираем папку "debug" или "release", в зависимости того, что вы собирали. Там будут нужные вам библиотеки и примеры в собранном виде.
Хочу собрать под под другую ОС
В архиве скриптов автоматической сборки есть разные варианты, что стоит учесть при выборе:
- C++98 компилируется намного быстрее, чем остальные, но могут возникнуть проблемы совместимости (особенно с std::string) при смешивании проекта с C++11 или новее.
- В настоящее время нет нужных скриптов под экосистемы Apple. Инструкция сборки под Linux должна работать также и для macOS, но могут потребовать некоторые корректировки.
Заключение
В следующей статье будем разбираться с директориями SDK, с примерами стандартными и что требуется для минимального проекта.
Если есть что добавить - пишите, материалов что-то совсем мало актуальных по данной библиотеке, тем более о новой версии.
Буду благодарен за любую поддержку каналу:
https://money.yandex.ru/to/4100110976771904