Ogre3D Basic Tutorials / Базовые туториалы Ogre3D: Basic Tutorial 6: The Ogre Startup Sequence

← →
Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

На этом этапе, мы определяем ресурсы которые будут использоваться нашим приложением.

cin 01.07.11 в 04:48

0

Для этого мы добавим каждый каталог с ресурсами в ResourceGroupManager.

cin 01.07.11 в 04:49

0

Добавьте следующий член класса в наш класс BasicTutorial6:

cin 01.07.11 в 04:49

0

Затем поместите его в список инициализации конструктора, как в случае с 'mPluginsCfg'.

cin 01.07.11 в 04:51

0

Нам нужно подключить Ogre::ConfigFile чтобы использовать класс-анализатор конфигурационных файлов Ogre.

cin 01.07.11 в 04:53

0

Добавьте это в самый верх файла 'BasicTutorial6.cpp':

cin 01.07.11 в 04:53

0

Теперь нам нужно добавить mResourcesCfg в release/debug логику в начало нашей "go" функции:

cin 01.07.11 в 04:54

0

Это необходимо потому что имя файла с ресурсами отличается в release и debug.

cin 01.07.11 в 04:55

0

Теперь мы можем действительно проанализировать некоторые ресурсы Ogre.

cin 01.07.11 в 04:55

0

Добавьте следующий код в BasicTutorial6::go:

cin 01.07.11 в 04:56

0

Здесь используется класс ConfigFile для того чтобы прочитать все ресурсы из файла "resources.cfg", но оно не загружает их (это нужно делать вручную).

cin 01.07.11 в 04:57

0

Имейте ввиду что, в вашем приложении вы можете использовать свой анализатор конфигурационных файлов и свой формат этих файлов. Если вы хотите вы можете заменить ConfigFile на свой.

cin 01.07.11 в 04:59

0

Метод для загрузки ресурсов в самом деле не имеет значения, пока что вы просто добавляете ресурсы в ResourceGroupManager.

cin 01.07.11 в 05:02

0

Теперь мы имеем проанализированный файл конфигурации, нам нужно добавить разделы в ResourceGroupManager.

cin 01.07.11 в 05:03

0

Следующий код перебирает проанализированный конфигурационный файл и добавляет каждый элемент в ResourceGroupManager с помощью метода addResourceLocation:

cin 01.07.11 в 05:05

0

Эта функция добавляет все ресурсы из файла конфигурации, но она только говорит Ogre, где они находятся.

cin 01.07.11 в 05:07

0

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

cin 01.07.11 в 05:09

0

Мы обсудим это позже в функции "Инициализация ресурсов".

cin 01.07.11 в 05:10

0

Если вы соберете и запустите приложение сейчас, то вы можете увидеть в "Ogre.log", что Огре создал группы ресурсов и проанализировал ресурсы в этих группах

cin 01.07.11 в 05:12

0

СОЗДАНИЕ СИСТЕМЫ РЕНДЕРИНГА

cin 01.07.11 в 05:12

0

Дальше нам нужно выбрать системы рендеринга (RenderSystem, такую как OpenGL или DirectX) и настроить её.

cin 01.07.11 в 05:14

0

Большинство демо-приложений используют диалоговое окно конфигурации, что является вполне разумным способом настройки вашего приложения.

cin 01.07.11 в 05:14

0

Огре также предлагает способ восстановления конфигурации, которая уже установлена пользователем, то есть вам никогда не надо будет заново всё настраивать.

cin 01.07.11 в 05:16

0

Во-первых, нам нужно добавить новый член класса в свой класс BasicTutorial6 для хранения наших окон - Ogre:: RenderWindow:

cin 01.07.11 в 05:17

0

Добавьте следующий код в метод BasicTutorial6::go:

cin 01.07.11 в 05:18

0

В первой части мы пытаемся восстановить конфигурацию из файла.

cin 01.07.11 в 05:18

0

Если эта функция возвращает false, это значит что файл не существует и мы должны показать диалог конфигурации, что мы и делаем во второй части.

cin 01.07.11 в 05:19

0

Также оно вернет false если пользователь отменил диалог нажав Cancel, если так то вы выходим из приложения.

cin 01.07.11 в 05:21

0

В этом примере мы выходим если возвращено false.

cin 01.07.11 в 05:22

0

Нам нужно перехватывать исключения. Если вы используете эту технику на практике, то я бы порекомендовал перехватывать исключения при запуске чтобы мы могли удалить ogre.cfg в блоке catch.

cin 01.07.11 в 05:24

0

Вполне возможно, что настройки, выбранные пользователем в диалоге настроек вызвали проблемы, и нужно дать возможность изменить их.

cin 01.07.11 в 05:27

0

Даже если вы не используете это для вашего приложения, когда вы распространяете его, отключение конфигурационного диалога может помочь сократить время разработки, так как вы не должны всегда подтверждать настройки графики при запуске программы.

cin 01.07.11 в 05:32

0

Ваше приложение может также вручную настроить RenderSystem, если вы решите использовать нечто иное, чем окно конфигурации Ogre.

cin 01.07.11 в 05:33

0

Типичный пример этого выглядит так:

cin 01.07.11 в 05:34

0

Вы можете использовать функцию Root:: getAvailableRenderers чтобы узнать, какие RenderSystems доступны для вашего приложения для использования.

cin 01.07.11 в 05:36

0

После того как вы получили RenderSystem, вы можете использовать RenderSystem::getConfigOptions, чтобы увидеть, какие опции доступны для пользователей.

cin 01.07.11 в 05:36

0

Комбинируя эти два вызова функции, Вы можете создать свой собственный диалог конфигурации для вашего приложения.

cin 01.07.11 в 05:37

0

СОЗДАНИЕ ОКНА РЕНДЕРИНГА

cin 01.07.11 в 05:37

0

Теперь, когда мы выбрали RenderSystem, нам нужно окно в котором Ogre будет рендерить.

cin 01.07.11 в 05:39

0

Есть на самом деле много вариантов, как это сделать, но мы выберем самый простой.

cin 01.07.11 в 05:40

0

Если вы хотите создать окно визуализации, то это сделать очень легко.

cin 01.07.11 в 05:41

0

Добавьте следующий код в BasicTutorial6::go:

proVIDec 29.06.11 в 07:21

0

Этот вызов инициализирует RenderSystem которую установили в предыдущем разделе.

cin 01.07.11 в 05:41

0

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

cin 01.07.11 в 05:42

0

Другой способ состоит в том, что вы можете использовать окна созданные с помощью Win32 API, wxWidgets или Qt, и так далее.

cin 01.07.11 в 05:44

0

Небольшой пример того, как сделать это под Windows, будет выглядеть примерно так:

cin 01.07.11 в 05:44

0

Обратите внимание, что вам все равно придется вызывать Root::initialise, но первый параметр установлен в false.

cin 01.07.11 в 05:45

0

Затем вы должны получить HWND - это дескриптор окна в котором Ogre будет рендерить.

cin 01.07.11 в 05:46

0

Как вы это будете делать, это определяется тем API который вы используете (и под Linux это было бы немного по-другому).

cin 01.07.11 в 05:48

0

После того как вы получили дексриптор, вы должны, используя NameValuePairList присвоить дескриптор параметру "externalWindowHandle".

cin 01.07.11 в 05:49

0
Минутку...

← Предыдущая страница

Следующая страница →