Balls and holes PC game / Balls and Holes PC игра
Сегодня
24 ноября 2024
2:25
Вход Регистрация Забыли пароль ?

Druid | ZX Spectrum | quest game | Firebird Software Ltd, 1986
Druid | ZX Spectrum | quest game | Firebird Software Ltd, 1986 Автор(ы): Dene T. Carter, Andrew E. Bailey
подробнее...

Теги

сайты, игры, дизайн, продвижение, php, html, css, my sql, c++, delphi, photoshop, 3ds max, fl studio, трекерская музыка, уроки

Статьи сайта

webinformatic - Что нужно знать для создания сайта ? float - использование в css - стилях

webinformatic - Уроки Fruity Loops Studio (FL Studio) - урок 2 - пишем свою композицию COLD

webinformatic - Уроки Fruity Loops Studio (FL Studio) - урок 3 - экспериментируем с композицией COLD

webinformatic - Что нужно знать для создания сайта ? Стандартные шрифты для сайта

webinformatic - Что нужно знать для создания сайта ? ASC II Коды символов

webinformatic - Уроки Fruity Loops Studio (FL Studio) - урок 4 - пишем первый вариант композиции COLD

webinformatic - Популяризация Современных Научных Знаний и Размышления на околонаучные темы. СОДЕРЖАНИЕ

webinformatic - Популяризация Современных Научных Знаний и Размышления на околонаучные темы. Энергетический кокон

webinformatic - Модуль галерей для любой cms

webinformatic - Портфолио выполненных проектов сайтов и приложений

webinformatic - Мои Музыкальные Миры - страница 2

webinformatic - megainformatic cms rs

webinformatic - модуль Падающий снег

webinformatic - проект Open Shop

webinformatic - Рисуем красивую девушку всего за 6 шагов

webinformatic - Галерея красивых рисованных девушек

webinformatic - НОВОГОДНЕЕ ОБРАЩЕНИЕ СОЗДАТЕЛЯ webinformatic К ЖИТЕЛЯМ ПЛАНЕТЫ интернет

webinformatic - Отзывы оставленные пользователями как впечатление о проделанной работе или что-либо понравившееся на сайте

webinformatic - Уроки css - атрибут position

webinformatic - Ива Ден энд КуХа - КОДЕКС ФРИЛАНСЕРА - СОДЕРЖАНИЕ

webinformatic - Ива Ден энд КуХа - КОДЕКС ФРИЛАНСЕРА - Глава 1 - Обычный день

webinformatic - Ива Ден энд КуХа - КОДЕКС ФРИЛАНСЕРА - Глава 2 - Начало (begin)

Новогодняя дискотека 2013 на megainformatic точка ru

webinformatic - Программируем на C++ с использованием MFC

webinformatic - Программируем на C++ с использованием MFC - Создание MFC приложения

webinformatic - Программируем на C++ с использованием MFC - Создание MFC приложения - hello, world !

webinformatic - Как создать игру ? - Пишем игровой движок с нуля

webinformatic - Как создать игру ? - Пишем игровой движок с нуля - Вступление

webinformatic - Как создать игру ? - Пишем игровой движок с нуля - Общая структура будущего игрового движка

Разное

webinformatic - Как создать игру ? - Пишем игровой движок с нуля - DXUTMainLoop - цикл работы DirectX-приложения

webinformatic - Варианты макетов Психолог 911

webinformatic - Шаблоны для сайтов - что это и какие они бывают ?

webinformatic - Ива Ден энд КуХа - КОДЕКС ФРИЛАНСЕРА - Глава 3 - Кто он ? (who is ?)

webinformatic - Мои Музыкальные Миры - готовая музыка mp3 - новинки 2013 года

webinformatic - Теория и практика хакерских атак - самозащита от нападения

webinformatic - Теория и практика хакерских атак - самозащита от нападения - Способы подмены реального IP

webinformatic - Fruity Loops Studio 9 - Как синтезировать свои сэмплы - изучаем возможности плагина Sytrus

webinformatic - Видоизменяем тему для Wordpress под свои нужды

webinformatic - Flash приложения и игры - Шаг 3 - управляемый шарик

webinformatic - Учимся создавать флеш-игры, что нужно знать для того, чтобы заняться созданием flash приложений и игр ?

webinformatic - Шаг 4 в освоении Flash-технологий - как анимировать персонажа и управлять им

webinformatic - Форма для смены шаблонов сайта. Модуль template selector

webinformatic - megainformatic cms express files + module slider

webinformatic - Создание сайта бесплатно или под заказ

webinformatic - Как создать flash баннер

webinformatic - Разработка flash-приложения для сайта: онлайн примерочная

webinformatic - Мои впечатления о книге - Владислав Крапивин - Журавленок и Молнии

webinformatic - Модуль отзывов/комментариев для вашего сайта

webinformatic - Модуль отзывов/комментариев для вашего сайта

webinformatic - Модуль отзывов/комментариев для вашего сайта

webinformatic - Модуль короткие ссылки short link

webinformatic - Работа с сокетами fsocket из php

webinformatic - Как создать игру Создание игровых панелей и индикаторов

webinformatic - Приключения Кости Коробкина - Как я провел лето - интерактивный комикс

webinformatic - Приключения Кости Коробкина - Как я провел лето - интерактивный комикс

     
     
 

4.12.2010, 18.12.2010

Разбор кода примера MultiAnimation (F:\GameDev\Microsoft DirectX SDK (August 2008)\Samples\C++\Direct3D\MultiAnimation)

 
     
 

Основные моменты, которые представлены в примере

модуль - MultiAnimation.cpp

//имя файла для земной поверхности, количество тайлов по вертикали и горизонтали

#define TXFILE_FLOOR L"\\Media\\Textures\\floor.jpg"
#define FLOOR_TILECOUNT 2

 
     
  CFirstPersonCamera g_Camera; // игровая камера  
     
 

Исполнение любого WinAPI приложения начинается с функции WinMain

поэтому в первую очередь смотрим - wWinMain

 
     
 

OnCreateDevice - функция вызывается модулем DXUT, непосредственно сразу же после создания Direct3DDevice (это происходит внутри DXUT). Загружаемые здесь ресурсы являются - D3DPOOL_MANAGED, т. е. загружаемые непосредственно в память видеокарты и зависящие от её состояния (от состояния объекта IDirect3DDevice).

загрузка моделей и текстур происходит в функции - OnResetDevice, эта функция вызывается специализированным объектом модуля DXUT.

 
     
 

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

OnFrameMove - метода подготовки сцены (анимации сцены);

OnFrameRender - метода отрисовки сцены.

Поступающие от системы сообщения обрабатываются в MsgProc

OnGUIEvent - обрабатывает сообщения элементов GUI (кнопок, полей ввода и т. п., эти элементы - классы DXUTgui)

KeyboardProc - обрабатываются сообщения от клавиатуры, но рассчитанные не на управление игрой, а более медленные операции, например вызов помощи/подсказки по клавише [F1] - Help.

Управление игрой требует достаточно оперативного отклика, поэтому должно происходить внутри OnFrameMove

 
     
 

Давайте сначала более детально проясним основные моменты работы кода.

Создадим резервные копии файлов MultiAnimation.h и MultiAnimation.cpp и смело начнём.

Первым шагом Я убрал (закомментировал) весь код, который относится к элементам GUI (g_DialogResourceManager, g_SettingsDlg, g_HUD), чтобы не усложнять и без того сложный код.

 
     
  Откомпилировал и убедился что всё работает.  
     
 

Далее я выяснил, что в функции MsgProc

строки кода -

if( -1 == g_dwFollow )
g_Camera.HandleMessages( hWnd, uMsg, wParam, lParam );

- это управление камерой от клавиатуры и мыши, если их закомментировать, то управление камерой становится невозможным.

 
     
  Далее я поставил режим компиляции Debug, расставил контрольные точки во всех значимых функциях и начал отслеживать как работает код в режиме отладки.  
     
  InitApp() - выполняется в первую очередь, здесь выставляется начальное положение камеры.  
     
  ModifyDeviceSettings - проверяются возможности d3d9device, необходимые для работы данного примера. А также выставляется начальный режим работы по отрисовке геометрии на аппаратном уровне (D3DDEVTYPE_HAL).  
     
  OnCreateDevice - создается шрифт для вывода отладочной информации, загружается текстура для пола, шейдер, рассчитываются параметры расположения пола и инициализируется материал для него.  
     
  OnResetDevice - выполняется загрузка кода шейдера, геометрии, параметры камеры, освещения, сбрасывается таймер  
     
  OnFrameMove - анимируются персонажи, камера  
     
  OnFrameRender - отрисовывается сцена  
     
  далее снова вызывается функция OnFrameMove, затем OnFrameRender и этот процесс повторяется бесконечно, пока не будет выполнено закрытие приложения.  
     
  В коде собственного примера я создал аналогичные функции, поэтому вызываться они должны в такой же последовательности, иначе будут ошибки. Это и предстоит проверить.  
     
  InitApp() - в моём коде вызову данной процедуры соответствует метод CAdventure::InitCamera()  
     
 

сразу же была выявлена ошибка - первым был вызван метод CAdventure::LoadMedia()

что соответствует OnCreateDevice вот и первая ошибка !

Из-за отсутствия вызова InitCamera() сцена рисовалась некорректно. Решение - вызов метода InitCamera() был вставлен первой строчкой в реализации метода LoadMedia()

 
     
 

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

В примере MultiAnimation управление персонажами (их добавлением) и некоторые другие опции реализованы кнопками GUI. Можно поступить так же, а можно перевести результат действия этих кнопок, привязав их к каким-либо клавишам и обрабатывая нажатия посредством DirectInput.

 
     
  На этом наш краткий обзор завершен.  
     
 
Something: Unexplained 2 captive of desires / Нечто: Необъяснимое 2 в плену желаний
Костя Коробкин Комикс Коллекционное издание - 6 комиксов, 81 страница, 220 mp3 треков
Время загрузки: 0,6851