Сообщество OGRE 3DСтатьи

Сборка и настройка Огра (WIN32 VS2010)

Автор:

Попробуем просто и без подробностей собрать Огр и создать рабочий проект который будет рисовать нам пустую сцену.

Собираем связку Огр + Буст. Все остальное трогать не будем для упрощения. Как было сказано в заголовке, сборка будет под 32 бита в Visual Studio 2010.

Архивы сырцов.

Вначале скачаем все нужные архивы с сырцами и программы - DXSDK, BOOST, CMAKE, OGRE_SRC и OGRE_DEPENDENCIES.

DXSDK - июнь 2010 г.
http://www.microsoft.com/downloads/details.aspx?familyid=3021D52B… isplaylang=en

BOOST - 1.43.0
http://sourceforge.net/projects/boost/files/

CMAKE - 2.8.2
http://www.cmake.org/cmake/resources/software.html

OGRE_SRC 1.7.1 и OGRE_DEPENDENCIES от 2010.05.01
http://www.ogre3d.org/download/source

Соответственно это сейчас версии такие, в будущим они изменятся и далее в сответствующих путях надо будет их поменять.

Сборка буста.

Подробности сборки можно найти здесь: http://boost.org/more/getting_started/windows.html

Если коротко, то:

Извлекаем архив ("boost_1_43_0.zip" или другой) в "C:\Program Files\".
Там появляется папка "boost_1_43_0" или другая с соответствующей версией буста.
Открываем консоль и переходим в эту папку.
Запускаем bootstrap.bat и ждем его завершения.
Потом "bjam.exe --build-type=complete" и ждем очень долго.

Результатом является папка буста весящая около шести гигабайт.

Теперь осталось создать переменные окружения:

BOOST_INCLUDE_DIRS = C:\Program Files\boost_1_43_0\boost
BOOST_LIBRARIES = C:\Program Files\boost_1_43_0\stage\lib
BOOST_ROOT = C:\Program Files\boost_1_43_0

Они нам нужны для того, чтобы CMake сумел найти буст.

Установка SDK для DirectX а потом и CMake.

Это сложности представлять не должно. Поэтому описывать это я не буду.

Подготовка окончена. Далее начинается, собственно, Огр.

Внвчале извлечение сырцов и сборка зависимостей.

Извлекаем архив с сырцами Огра ("ogre_src_v1-7-1.exe" или другой) в "C:\Program Files\".
Там появляется папка "ogre_src_v1-7-1" или другая с соответствующей версией Огра.
Я ее для красоты переименовал в "ogre_1_7_1".
Далее извлекаем зависимости ("OgreDependencies_MSVC_20100501.zip" или другой) в "C:\Program Files\ogre_1_7_1\".
Затем переходим в "C:\Program Files\ogre_1_7_1\Dependencies\src\".
Открываем проект для соответствующей версии студии и собираем его в релизе и дебаге.

Создание проектов.

Теперь можно запустить CMake (cmake-gui), сказать ему, что и сырцы и бинарники лежат в "C:/Program Files/ogre_1_7_1".
Далее жмем на кнопку "Configure" и смотрим, чтобы в окне конфигурации параметр OGRE_CONFIG_THREAD_PROVIDER = boost.
Если нет, то надо разбираться с причиной.
Далее жмем кнопку "Generate" и CMake, один раз спросив, для чего проекты генерить, сгенерит нам все что нужно.
Если же эта кнопка не активна, то еще раз нажимаем на "Configure".

Теперь открываем "C:\Program Files\ogre_1_7_1\OGRE.sln" и собираем собственно Огр для нужных нам конфигураций.

ОДНАКО! Не забываем после сборки очередной конфирурации собирать специальный проект "INSTALL". Он будет копировать нужные файлы в папку "C:\Program Files\ogre_1_7_1\SDK\".

Теперь осталось создать переменные окружения:

OGRE_SDK = C:\Program Files\ogre_1_7_1\SDK
Добавить в переменную Path:
Path += ;C:\Program Files\ogre_1_7_1\SDK\bin\debug;C:\Program Files\ogre_1_7_1\SDK\bin\release

Зачем ? Для удобства. Далее станет понятно.

Создание простого проекта на Огре.

Попробуем теперь собрать простенькое приложеньице для Огра.

Для этого создаем в удобном месте пустой Win32 проект и начинаем его настраивать.

Добавляем файл Main.cpp с содержимым как ниже:

#include <ExampleApplication.h>

class AppFrameListener : public ExampleFrameListener
{
public:
  AppFrameListener(RenderWindow *win, Camera *cam, const String &debugText)
    : ExampleFrameListener(win, cam)
  {
    mDebugText = debugText;
  }

  bool frameStarted(const FrameEvent& evt)
  {
    mDebugText = "P: " + StringConverter::toString(mCamera->getDerivedPosition()) +
           " " + "O: " + StringConverter::toString(mCamera->getDerivedOrientation());

    if( ExampleFrameListener::frameStarted(evt) == false )
      return false;
    return true;
  }
};

class Application : public ExampleApplication
{
public:
  Application() {}

protected:
  String mDebugText;

  void createScene(void)
  {
    mSceneMgr->setAmbientLight(ColourValue(0.1f, 0.1f, 0.1f));
    mCamera->setNearClipDistance(0.1f);
    mCamera->setFarClipDistance(0.0f);
    mCamera->setPosition(0, 0, 0);
  }

  // Create new frame listener
  void createFrameListener(void)
  {
    mFrameListener= new AppFrameListener(mWindow, mCamera, mDebugText);
    mRoot->addFrameListener(mFrameListener);
  }
};

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
  try
  {
    Application app;
    app.go();
  }
  catch (Ogre::Exception& e)
  {
    MessageBox(NULL, e.getFullDescription().c_str(), "An exception has occurred!", MB_ICONERROR | MB_TASKMODAL);
  }

  return 0;
}

Далее открываем свойство проекта и комбобокс "Configuration" ставим в "All Configurations".

Далее ставим:

General -> Output Directory = $(SolutionDir)
General -> Character Set = Use Multi-Byte Character Set
C/C++ -> General -> Additional Include Directories = $(OGRE_SDK)/include/ogre;$(OGRE_SDK)/include;$(BOOST_ROOT)
Linker -> general -> Additional Library Directories = $(OGRE_SDK)/lib/$(Configuration);$(BOOST_LIBRARIES)
Linker -> Input -> Additional Dependencies += OgreMain.lib;OIS.lib;     // Лучше добавлять в начало

Потом переключаемся: "Configuration" ставим в "Debug".

Идем в Linker -> Input -> Additional Dependencies, там дописываем к  OgreMain.lib;OIS.lib; буквы "_d" в конце имен (т.е. станет "OgreMain_d.lib;OIS_d.lib;").

Все! Можно собирать. Однако запускаться оно пока не будет.

Для успешного запуска надо скопировать несколько файликов в папку с нашим проектом.

C:\Program Files\ogre_1_7_1\bin\debug\plugins_d.cfg
C:\Program Files\ogre_1_7_1\bin\release\plugins.cfg
C:\Program Files\ogre_1_7_1\SDK\OSX\Xcode Templates\Xcode\Project Templates\Ogre\iPhone OS\Resources\media\packs\OgreCore.zip

И создать resources_d.cfg и resources.cfg с одинаковым содержанием:

[General]
FileSystem=.
Zip=OgreCore.zip

Собственно это все.

27 июля 2010 (Обновление: 28 июля 2010)

Комментарии [3]