Найти тему
GameDev & Ogre3d

Ogre3d [2.2] Сборка библиотеки

Оглавление

Сборка под Linux не должна сильно отличаться от варианта под Windows, в силу скриптов автоматизации (об этом ниже).

Требования:

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).

Так как я использую VS2019, то мне это помогло решить проблему
Так как я использую VS2019, то мне это помогло решить проблему
Собираем по новой OgreMain и все остальные, что завершились ошибкой
Собираем по новой OgreMain и все остальные, что завершились ошибкой

Вот и всё, переходим в "ogre-next\build\bin" и выбираем папку "debug" или "release", в зависимости того, что вы собирали. Там будут нужные вам библиотеки и примеры в собранном виде.

Хочу собрать под под другую ОС

В архиве скриптов автоматической сборки есть разные варианты, что стоит учесть при выборе:

  • C++98 компилируется намного быстрее, чем остальные, но могут возникнуть проблемы совместимости (особенно с std::string) при смешивании проекта с C++11 или новее.
  • В настоящее время нет нужных скриптов под экосистемы Apple. Инструкция сборки под Linux должна работать также и для macOS, но могут потребовать некоторые корректировки.
  • Для сборки под iOS обратитесь к руководству по настройке.

Заключение

В следующей статье будем разбираться с директориями SDK, с примерами стандартными и что требуется для минимального проекта.

Если есть что добавить - пишите, материалов что-то совсем мало актуальных по данной библиотеке, тем более о новой версии.

Буду благодарен за любую поддержку каналу:
https://money.yandex.ru/to/4100110976771904