fle game engine - движок для создания игр
fle game engine - движок для создания игр


Вакансии
Игродельня
Сегодня
23 сентября 2017
8:33
Вход Регистрация Забыли пароль ?

сайт megainformatic - Работа с базами данных MySQL
        Конструируем свой сайт - полезные статьи для начинающих строителей сайтов.
подробнее...

Теги

создание сайтов, создание игр, дизайн, игры, информатика, уроки photshop, php, c++, музыка, delphi, cms, робосайт

Статьи сайта

megainformatic - Пример игры с исходным кодом Donuts3D

megainformatic - Как создать игру ВЕСЕЛЫЙ БУКВОЕЖКА - программируем сами

megainformatic - Как создать игру ВЕСЕЛЫЙ БУКВОЕЖКА - создаем игровую оболочку

megainformatic - Открытый Полный Исходный код игры Дорога в Город

megainformatic - Как создать игру - Веселый Единственный Буквоежка - программируем основу будущей игры

megainformatic - Как создать игру - Веселый Единственный Буквоежка - выводим заставку

megainformatic - Как создать игру - Веселый Единственный Буквоежка - игровое меню

megainformatic - Как создать игру - Веселый Единственный Буквоежка - движение и анимация героя

Как Создать игру ВЕБ - Веселый Единственный Буквоежка - Программируем сами

Как Создать игру ВЕБ - Веселый Единственный Буквоежка - Программируем сами

megainformatic - Примеры моих работ

megainformatic - Музыкальные темы

megainformatic - Уроки Photoshop - Чудеса

megainformatic - Купить Уроки Photoshop - Чудеса

megainformatic - Онлайн Обучение, Репетитор

megainformatic - Уроки Photoshop - Рисуем и Анимируем

megainformatic - Уроки Photoshop - Рисуем и Анимируем - Урок 1 - Старт

megainformatic - Уроки Photoshop - Рисуем и Анимируем на AllSoft.ru

megainformatic - DirectX 9c - Изучаем пример MultAnimation

megainformatic - megainformatic cms Система Управления Контентом

megainformatic - Темы для WordPress

megainformatic - Что нужно для создания собственного сайта ?

megainformatic - Макет дизайна Вашего сайта

скачать megainformatic cms

megainformatic - Итоги 2010 года

megainformatic - Что нужно для создания собственного сайта ?

megainformatic - как создать инсталлятор для собственной cms

megainformatic - Новости - страница 2

Нововведения в megainformatic cms

Web Администрирование

Уроки Верстки

Система автоматизированной е-майл рассылки

Система автоматизированной е-майл рассылки

megainformatic - Выгрузка файла на сайт

megainformatic - выпадающее меню на html и css

megainformatic - Использование checkbox

Краеугольная особенность работы Web-form на примере смены состояния checkbox

Технологии WEB

Технологии WEB - AJAX-запросы

Часто Задаваемые Вопросы

Продукты

Проблемы с кодировками при отображении страниц

игра Нечто: Необъяснимое Нить Накала - "в плену желаний"

Система Автоматизации Доставки Электронных Заказов megainformatic cms e-pro

megainformatic cms e-pro Автоматизация Обработки Уведомлений о Заказах по партнерским программам

megainformatic cms e-pro Автоматизация Обработки Уведомлений о Заказах по партнерским программам

webinformatic: Музыкальная страничка трэкера

megainformatic - Создание музыки и звука

webinformatic: Создание музыки и звука: урок 2

megainformatic - Создание музыки и звука: урок 3 - настройка Impulse Tracker для работы в WinXP

megainformatic - Создание музыки и звука: урок 4 - Введение в Mod Plug Tracker

megainformatic - Создание музыки и звука: урок 5 - Первая композиция в Mod Plug Tracker

megainformatic - Создание музыки в Impulse Tracker 2.14 - урок 6 - Ввод Нот

megainformatic - Создание музыки в Impulse Tracker 2.14 Первая мелодия

megainformatic - Создание музыки в Impulse Tracker 2.14 Настройка параметров сэмплов

megainformatic - Создание музыки и звука: теория и практика создания трэкерской музыки

     
  Ваше Визуальное Шоу - программа для создания автономных видео-презентаций в форме слайд-шоу с озвучанием  
     
 

Как создать игру ? - Программируем сами.

Рассмотрение программирования игр под DirectX 9c на C++ с использованием среды разработки MSVS 2005 или выше.

 
     
  [содержание] [страница 2] [далее]  
     
  Самый первый шаг - страница 2  
     
 

Итак, Мы рассмотрели код функции wWinMain и это оказалось не так уж сложно даже для тех, кто совсем никогда не создавал не только игр, а и вообще не был знаком с языком C++ и DirectX-ом как таковым.

Но вот эти светлые головы решились освоить создание игр и не просто научиться программировать под DirectX 9c на языке C++, но и создать хорошую, интересную, качественную игру, в которую было бы увлекательно играть и не стыдно показать её всем знатокам и любителям компьютерных игр.

 
     
  Не совсем понятно - скажут многие из Вас - мы всего лишь рассмотрели функцию wWinMain примера CreateDevice из DirectX 9c SDK, но это еще не окончательный ответ на вопрос как создаются DirectX - приложения.  
     
 

Еще раз взгляните на код функции wWinMain

обратите внимание на строку кода

wc.lpfnWndProc = MsgProc;

 
     
 

Здесь Мы говорили о передаче указателя на некую оконную процедуру

В коде модуля CreateDevice.cpp есть эта функция - посмотрите сами -

 
     
  MsgProc  
     
 

Это наш обработчик системных сообщений

LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
switch( msg )
{
case WM_DESTROY:
Cleanup();
PostQuitMessage( 0 );
return 0;

case WM_PAINT:
Render();
ValidateRect( hWnd, NULL );
return 0;
}

return DefWindowProc( hWnd, msg, wParam, lParam );
}

 
     
 

Иными словами любое Windows-приложение, в том числе DirectX - приложение, работает по принципу - если от системы не поступает никаких сообщений, предназначенных данному приложению, то оно "отдыхает" - более точно находится в состоянии бездействия Idle.

Это позволяет операционной системе усиленно выполнять иные задачи, если таковые имеются.

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

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

 
     
 

Функция MsgProc как раз и выполняет эту задачу - В нашем примере обрабатываются два сообщения - WM_DESTROY и WM_PAINT

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

DefWindowProc( hWnd, msg, wParam, lParam );

 
     
 

для сообщения - WM_DESTROY выполняются функции Cleanup и PostQuitMessage

для WM_PAINT вызывается функция Render, а затем ValidateRect

и тот и другой обработчики сообщений выполняют

return 0 - т. е. возвращают значение 0 как результат исполнения функции MsgProc

в остальных случаях будет возвращаться значение, формируемое обработчиком по-умолчанию -

return DefWindowProc( hWnd, msg, wParam, lParam );

 
     
 

Таким образом, Вы видите, что Вам нужно рассмотреть еще код следующих функций -

InitD3D - потому что её вызов также присутствует в коде функции wWinMain, а также

Cleanup и Render.

Остальные функции ValidateRect, PostQuitMessage являются системными и их назначение Вы можете узнать из справочной системы MSVS - MSDN - Microsoft Developer Network. Справочная система как правило идет в составе пакета MSVS в виде отдельного диска. Если его у Вас нет - срочно его раздобудьте - найдите и скачайте где-нибудь в интернете, в противном случае - без Справочной системы Вы дальше нормально работать не сможете !!!

 
     
 

Функция InitD3D

HRESULT InitD3D( HWND hWnd )
{
// создаем объект D3D
if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
return E_FAIL;

// формируем структуру для передачи в метод CreateDevice
D3DPRESENT_PARAMETERS d3dpp;

//обнуляем все поля переменной d3dpp
ZeroMemory( &d3dpp, sizeof( d3dpp ) );

//задаем оконный режим приложения
d3dpp.Windowed = TRUE;

//отключаем эффект обмена буферов заднего плана
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;

//формат буфера заднего плана пока неизвестен, т. к. будет зависеть от установленного //текущего разрешения экрана
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;

//создаем устройство Direct3D, здесь мы используем дисплейный адаптер по-умолчанию,

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

//передаем указатели на переменную d3dpp и g_pd3dDevice

//в последнюю в случае успеха будет помещен указатель на интерфейс IDirect3DDevice9
if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp, &g_pd3dDevice ) ) )
{
return E_FAIL;
}

//если создание прошло успешно - возвращаем код возврата S_OK

return S_OK;
}

 
     
 

Функции Cleanup и Render -

//функция Cleanup предназначена для освобождения объектов D3DDevice и D3D

VOID Cleanup()
{
if( g_pd3dDevice != NULL )
g_pd3dDevice->Release();

if( g_pD3D != NULL )
g_pD3D->Release();
}

//функция Render выполняет

VOID Render()
{

//если указатель на интерфейс IDirect3DDevice9 равен NULL - возврат
if( NULL == g_pd3dDevice )
return;

//очищаем буфер заднего плана синим цветом
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB( 0, 0, 255 ), 1.0f, 0 );

//начало отрисовки объектов сцены
if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
{
//в дальнейшем в этом месте будет происходить фактическая отрисовка сцены

//конец отрисовки сцены
g_pd3dDevice->EndScene();
}

//представление буфера заднего плана на передний план (экран)
g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}

 
     
  Здесь также упущен в целях простоты метод FrameMove - в котором осуществляется анимация объектов игровой сцены.  
     
 

Чтобы лучше усвоить теорию нужно её проверить на практике - жмём клавишу F7 для того, чтобы откомпилировать приложение CreateDevice.

Если компиляция прошла без ошибок - Вам нужно открыть папку

 
     
  C:\DXSDK_Aug2008\Samples\C++\Direct3D\Tutorials\Tut01_CreateDevice\Debug  
     
 

и запустить файл CreateDevice.exe дважды щелкнув по его значку.

Имейте в виду, и я об этом уже говорил, что указанный путь в Вашей системе может быть ДРУГИМ!!! проверьте куда Вы установили DirectX SDK и начинайте открывать именно эту папку, я же здесь и далее больше не буду останавливать на этом важном моменте, а буду указывать все пути, предполагая, что DirectX SDK по-умолчанию установлен у Вас в папке

C:\DXSDK_Aug2008

Вы же должны вместо этого подставлять путь к установленному DX SDK с учетом того, как Вы его установили на своём компьютере !!!

 
     
  [содержание] [страница 2] [далее]  
     
 

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



fle game engine - движок для создания игр
fle game engine - движок для создания игр


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