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


Balls and holes PC game / Balls and Holes PC игра
Вакансии
Игродельня
Сегодня
18 февраля 2019 7:20
Вход Регистрация Забыли пароль ?

megainformatic - статья Тимонина Андрея - Поиск файлов. Получаем список файлов каталога.
[к содержанию] [другие статьи Тимонина Андрея] Поиск файлов. Получаем список файлов каталога. автор: Тимонин Андрей дата публикации на сайте Мега Информатик: 18.11.2012
подробнее...

Теги создание сайтов, создание игр, дизайн, игры, информатика, уроки photshop, php, c++, музыка, delphi, cms, робосайт
Статьи сайта
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 - Создание музыки и звука: теория и практика создания трэкерской музыки

megainformatic - Инструкция по оплате услуг средствами WebMoney

Основы работы в Microsoft Visual Studio 2008 и DirectX 9 (DX SDK Aug 2008)

Введение в программирование игр на С++ для платформы DirectX 9 - Первый старт

Введение в программирование игр на С++ для платформы DirectX 9 - Меняем иконку приложения

Введение в программирование игр на С++ для платформы DirectX 9 Добавляем другую модель

Введение в программирование игр на С++ для платформы DirectX 9 Программирование игр в directx. Hello, World!

Введение в программирование игр на С++ для платформы DirectX 9 Разбираем конструкции языка C++ на примере работы в Microsoft Visual Studio 2008

Разбираем конструкции языка C++ на примере работы в Microsoft Visual Studio 2008 - Урок 1 Основные операторы языка C++

Разбираем конструкции языка C++ на примере работы в Microsoft Visual Studio 2008 - Урок 1 Основные операторы языка C++ (часть 2)

Урок 2 Написание Win32-приложений. Обзор стартового кода Win32-приложения. Добавление ресурса текстовая строка

Урок 3 Создание Win32-приложений. Создание меню и простых диалоговых окон.

Урок 4 Создание Win32-приложений. Стандартные диалоги. Изучение сопутствующих конструкций языка. Консольные Win32-приложения. Указатели. Ссылочный тип. Массивы.

Урок 4 часть 2 Win32. Диалог выбора цвета, смена цвета фона окна приложения

Написание приложения DirectX9c + MFC в среде MSVS 2005

megainformatic - Создание компьютерных игр на основе DirectX в среде Delphi 6, 7

megainformatic - Создание компьютерных игр на основе DirectX в среде Delphi 6, 7 - Почему избраны DX8 и Delphi ?

megainformatic - Основы IDirectMusic8 в среде Delphi6-7

megainformatic - Основы DirectInput8 в среде Delphi 7

megainformatic - Основы DirectSound8 в среде Delphi6-7

megainformatic - Плагин для 3DS MAX из DX9 SDK

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2)

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 2

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 3

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 4

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 5

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 6

Система управления сайтом - megainformatic cms e-shop

Система управления сайтом - megainformatic cms e-shop

Система управления сайтом - megainformatic cms e-shop

megainformatic - Уроки 3ds max - Введение в 3ds max

megainformatic - ГАЛЕРЕЯ 3D-моделей

megainformatic - СОЗДАНИЕ МАКЕТА ПОМЕЩЕНИЯ

megainformatic - Создание макета помещения - этап 2

megainformatic - МОДЕЛИРОВАНИЕ НА УРОВНЕ МНОГОУГОЛЬНИКОВ

megainformatic - СОЗДАНИЕ ПРЕДМЕТОВ ОБСТАНОВКИ ПОМЕЩЕНИЯ

megainformatic - Моделирование обстановки помещения

megainformatic - Создание модели автомобиля

megainformatic - Создание текстурной развертки для модели автомобиля

megainformatic - Создание анимации вращающихся колес автомобиля

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

megainformatic - Основы 3D-анимации, экспорт скелетной анимации

megainformatic - Подготовка модели к использованию скелетной анимации

megainformatic - Продолжаем Создание скелета для данной модели

megainformatic - Построение ирерархических связей между объектами и основы 3d анимирования

megainformatic - Особенности экспорта моделей и анимации экспортером kWXPort080719 из 3ds max 2009 

megainformatic - Создание модели броневика (Хэд)

megainformatic cms e-mailer

megainformatic cms e-mailer

подробнее

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

[Содержание]  [Назад]  [Далее]

Итак, если с общей схемой работы игрового движка Вам теперь всё ясно, то будем погружаться дальше. :)))

DXUTMainLoop - цикл работы DirectX-приложения

Мы рассмотрим что собой представляет цикл DXUTMainLoop

На показанной блок-схеме обозначены основные элементы этого цикла -

DXUTCreateDevice

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

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

Обычные Windows-приложения не обладают такими возможностями, которые предоставляет DirectX, поэтому игры "выжимают" из вашего компьютера всё возможное быстродействие и все ресурсы на 100% и даже больше % :))))

WM_QUIT != msg.message

while( WM_QUIT != msg.message ) представляет собой бесконечный цикл обработки системных сообщений, выполняемый до тех пор, пока не поступит сообщение WM_QUIT свидетельствующее о завершении работы приложения.

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

Этот этап осуществляется внутри DXUTRender3DEnvironment

Вот собственно и всё. Как видите тут тоже всё достаточно просто. Необходимые подробности Вы можете почерпнуть изучая примеры из DirectX SDK Aug 2008 или выше, а также из готового игрового движка, который я уже написал - Полный исходный код игры ВЕБ - Веселый Единственный Буквоежка.

Реализация функции DXUTMainLoop описана в модуле DXUT.cpp

Найти данный модуль достаточно просто - если проект исходного кода движка у вас уже открыт в среде MSVS, то находим модуль DXUT.cpp в окошке Solution Explorer как показано на рисунке

если проект исходного кода движка у вас уже открыт в среде MSVS, то находим модуль DXUT.cpp в окошке Solution Explorer как показано на рисунке

Теперь заглянем в модуль DXUT.cpp и посмотрим, что записано в реализации процедуры void WINAPI DXUTRender3DEnvironment()

Там как видим всего лишь такой код

if( DXUTIsCurrentDeviceD3D9() )
DXUTRender3DEnvironment9();
else
DXUTRender3DEnvironment10();


Т. е. если ваше приложение работает в режиме DirectX 10 - то будет выполнена процедура DXUTRender3DEnvironment10, и если в режиме DirectX 9 - тогда DXUTRender3DEnvironment9.

DirectX 10 работает только под системами Windows Vista и выше, поэтому выбор DirectX 9 более универсален - приложения будут работать и на XP и даже на более ранних версиях Windows, естественно с установленными файлами для DirectX 9 и драйверами под эту версию directx.

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

Мы с Вами уже добрались до самого интересного -

void DXUTRender3DEnvironment9()

Код, который записан внутри этой процедуры Вы также можете найти в модуле DXUT.cpp который есть в DirectX SDK Aug 2008 или в Полном исходном коде игры ВЕБ - Веселый Единственный Буквоежка

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

if( GetDXUTState().GetDeviceLost() || DXUTIsRenderingPaused() || !DXUTIsActive() )
{
Sleep( 50 );
}


Данный блок кода проверяет условия - устройство DirectD3DDevice "потеряно", либо процесс отрисовки приостановлен (пауза), либо окно приложения не активно (потеряло фокус).

Если одно из указанных событий имело место, то происходит приостановка (sleep) выполнения приложения длительностью 50 миллисекунд.

IDirect3DDevice9* pd3dDevice = DXUTGetD3D9Device();)
if( NULL == pd3dDevice ))
{)
if( GetDXUTState().GetDeviceLost() ))
{)
DXUTDeviceSettings deviceSettings = DXUTGetDeviceSettings();)
DXUTChangeDevice( &deviceSettings, NULL, NULL, false, true );)
})
)
return;)
})


В данном кусочке кода видим как объявляется переменная pd3dDevice, какой она имеет тип - IDirect3DDevice9, символ * свидетельствует о том, что в переменной pd3dDevice хранится не сам объект IDirect3DDevice9, а только указатель на него (ссылочный тип).
Не путайте с гиперссылкой :))))

Дам небольшое пояснение.

int some = 1; //это переменная some имеющая тип int (целое число) равная значению 1
int* psome = &some; /* а эта переменная - psome - указатель на int и как видите хранит не значение 1, а адрес этой переменной в памяти - это и есть указатель или ссылочный (reference) тип */


Созданные настройки для устройства сохраняем в переменной deviceSettings.

Вызываем функцию DXUTChangeDevice, которая создает новое устройство directdevice.

Помимо этого (см. далее по коду внутри DXUTRender3DEnvironment9 ) проверяется TestCooperativeLevel - своего рода уровень занятости устройства directdevice.

[Содержание]  [Назад]  [Далее]
подробнее

Веселый Буквоежка - онлайн комикс - страница 14

представляем Веселый Буквоежка - онлайн комикс.

Сам верблюд!

Веселый Буквоежка - онлайн комикс - страница 14

если кликать картинку она будет последовательно меняться в размерах от 620 до 2048 пиксель.

[страница 1]  [страница 2]  [страница 3]  [страница 4]  [страница 5]  [страница 6]  [страница 7]  [страница 8]  [страница 9]  [страница 10]  [страница 11]  [страница 12]  [страница 13]  [страница 14]  [страница 15]  [страница 16]  [страница 17]  [страница 18]  [страница 19]  [страница 20]  [страница 21]  [страница 22]  [страница 23] 

подробнее

     
  Веселый Буквоежка - игра  
     
 

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

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

 
     
  [содержание] [назад] [страница 3] [далее]  
     
  Введение в 2d-игры - D3DApp - Внедряем простейшее d3d-приложение  
     
  В предыдущем уроке Мы с Вами создали простейшую игровую оболочку, которая выполняет запуск игры или показ веб-страничек <Купить> или <Еще игр>, подразумевая приобретение полной версии игры или показ других проектов.  
     
  Я надеюсь, что Вы нашли ответ на все свои вопросы, а предложенный метод решения у Вас привел к положительному результату. Если вопросы еще остались - советую практиковаться или задавать вопросы на нашем форуме и по e-mail (см. внизу данной страницы)  
     
  В данном уроке, как я и обещал, мы приступим к созданию основы будущей нашей игры Веселый Буквоежка. По сути игра уже готова - Вам полностью доступен для покупки ПОЛНЫЙ ИСХОДНЫЙ КОД игры ВЕСЕЛЫЙ БУКВОЕЖКА за символическую плату - 200 рублей.  
     
 
 
     
 

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

Как я уже упоминал, сейчас мы займемся рассмотрением реализации функции StartD3DApp.

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

1) Откройте настройки проекта - Project > Fle Properties и в разделе

Configuration Properties > C/C++ > General

в поле Additional Include Directories

пропишите пути к следующим папкам -

 

 
     
  ..\..\..\..\..\Include\;
common\DXUT\Core;
common\DXUT\Optional;
common;
common\DMusic;
game_common;
fmod4_api\inc;
fmod4_api\src;
common\DSound
 
     
  заметьте, что здесь указаны относительные пути, т. е. папка Include представляет папку с заголовочными файлами из DirectX SDK и расположена на пять папок выше относительно текущей папки проекта Fle. Остальные папки должны находиться внутри папки проекта Fle. Их содержимое находится в ПОЛНОМ ИСХОДНОМ КОДЕ игры Веселый Единственный Буквоежка, который Вы можете приобрести.  
     
 

Configuration Properties > Linker > General

в поле Additional Library Directories

..\..\..\..\..\Lib\x86;

fmod4_api\lib

 
     
 

Configuration Properties > Linker > Input

в поле Additional Dependencies

для конфигурации Debug

dxerr.lib dxguid.lib d3dx9d.lib d3d9.lib comctl32.lib dsound.lib shlwapi.lib dinput8.lib winmm.lib fmodexL_vc.lib

для конфигурации Release

dxerr.lib dxguid.lib d3dx9.lib d3d9.lib comctl32.lib winmm.lib dsound.lib shlwapi.lib dinput8.lib fmodex_vc.lib

 
     
  Сохраните эти изменения используя кнопку Save All на стандартной панели инструментов.  
     
  2) Вам постепенно будут требоваться для работы те или иные файлы из ПОЛНОГО ИСХОДНОГО КОДА игры Веселый Единственный Буквоежка, поэтому подумайте о его приобретении, либо Вам придется создавать собственные аналоги, правда зато Вы сможете сделать это совершенно бесплатно.  
     
  Для начала попробуем внедрить в наше приложение код, аналогичный уроку Самый первый шаг, т. е. при нажатии кнопки <Играть> в окне нашей игровой оболочки будет выполняться создание окна и заполнение его рабочей области одним цветом средствами DirectX, а далее мы будем постепенно наращивать этот потенциал.  
     
 

В файле Fle.h добавляем следующие строки кода -

#include <d3d9.h>
#include <d3dx9.h>

//название приложения
#define GameAppName L"Веселый Буквоежка"

INT StartD3DApp();

 

 
     
 

В файле Fle.сpp -

#include "DXUT.h"
#include "SDKmisc.h"

void RenderText();
void InitD3DApp();
void FreeD3DApp();

В методе BOOL CFleApp::InitInstance()

после строки

CWinApp::InitInstance();

изменить -

SetRegistryKey(_T("Fle game"));

код после строк -

CFleDlg dlg;
m_pMainWnd = &dlg;

изменить на -

InitD3DApp();

INT_PTR nResponse = dlg.DoModal();

FreeD3DApp();

return FALSE;

создать реализацию для следующих функций -

 
     
  void InitD3DApp()
{

GetModuleFileName(NULL, AppRootDir, AppRootDirSize);
PathRemoveFileSpec(AppRootDir);

}

void FreeD3DApp()
{

}

void RenderText()
{

// Вспомогательный объект хранит расположение текста и цвет,
// он вызывает метод pFont->DrawText( m_pSprite, strMsg, -1, &rc, DT_NOCLIP, m_clr );
// Если передан NULL в качестве m_pSprite, он будет работать, однако
// метод pFont->DrawText() не будет обработан совместно с методом вывода. Обработка // дополнительных вызовов снижает производительность.

CDXUTTextHelper txtHelper( g_pFont, g_pTextSprite, 10 );

// вывод статистики
txtHelper.Begin();


txtHelper.SetInsertionPos( 4, 0 );
txtHelper.SetForegroundColor( 0xFF0000FF );
txtHelper.DrawTextLine( DXUTGetFrameStats( true ) );

txtHelper.End();
}

 
     
 

//--------------------------------------------------------------------------------------

// Отклонение любых D3D9 устройств не подтвержденных приложением возвратом

// значения false
//--------------------------------------------------------------------------------------

bool CALLBACK IsD3D9DeviceAcceptable( D3DCAPS9* pCaps, D3DFORMAT AdapterFormat, D3DFORMAT BackBufferFormat,
bool bWindowed, void* pUserContext )
{
// обычно исключаем устройства не поддерживающие alpha blending
IDirect3D9* pD3D = DXUTGetD3D9Object();
if( FAILED( pD3D->CheckDeviceFormat( pCaps->AdapterOrdinal, pCaps->DeviceType,
AdapterFormat, D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING,
D3DRTYPE_TEXTURE, BackBufferFormat ) ) )
return false;

// требуется поддержка текстур формата A8R8G8B8
if( FAILED( pD3D->CheckDeviceFormat( pCaps->AdapterOrdinal, pCaps->DeviceType,
AdapterFormat, 0,
D3DRTYPE_TEXTURE, D3DFMT_A8R8G8B8 ) ) )
return false;

return true;
}

 
     
  //--------------------------------------------------------------------------------------
// Модифицировать настройки d3d device до его создания - true
//--------------------------------------------------------------------------------------

bool CALLBACK ModifyDeviceSettings( DXUTDeviceSettings* pDeviceSettings, void* pUserContext )
{
return true;
}
 
     
  //--------------------------------------------------------------------------------------
// создавайте здесь любые D3D9 ресурсы, которые будут существовать до выполнения // // сброса устройства (D3DPOOL_MANAGED)
// и не привязанные к размерам буфера заднего плана
//--------------------------------------------------------------------------------------

HRESULT CALLBACK OnD3D9CreateDevice( IDirect3DDevice9* pd3dDevice, const D3DSURFACE_DESC* pBackBufferSurfaceDesc,
void* pUserContext )
{
HRESULT hr;

V_RETURN( D3DXCreateFont( DXUTGetD3D9Device(), 12, 0, 0, 1, FALSE, DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE,
L"MS Sans Serif ", &g_pFont ) );

return S_OK;
}

 
     
  //--------------------------------------------------------------------------------------
// Создавайте здесь любые D3D9 ресурсы которые не существуют во время сброса // // // устройства (D3DPOOL_DEFAULT)
// или привязанные к размеру буфера заднего плана
//--------------------------------------------------------------------------------------

HRESULT CALLBACK OnD3D9ResetDevice( IDirect3DDevice9* pd3dDevice, const D3DSURFACE_DESC* pBackBufferSurfaceDesc,
void* pUserContext )
{
HRESULT hr;

if( g_pFont )
V_RETURN( g_pFont->OnResetDevice() );

V_RETURN( D3DXCreateSprite( pd3dDevice, &g_pTextSprite ) );

// reset the timer

return S_OK;
}

 
     
  //--------------------------------------------------------------------------------------
// Обработка изменений сцены. Вызывается в соответствии с тем какой D3D API // // // // // используется
//--------------------------------------------------------------------------------------

void CALLBACK OnFrameMove( double fTime, float fElapsedTime, void* pUserContext )
{

}
 
 
     
  //--------------------------------------------------------------------------------------
// Вывод сцены с использованием устройства D3D9
//--------------------------------------------------------------------------------------

void CALLBACK OnD3D9FrameRender( IDirect3DDevice9* pd3dDevice, double fTime, float fElapsedTime, void* pUserContext )
{
HRESULT hr;


// очистка места вывода и z-буфера
V( pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, g_dwClearColor,
1.0f, 0 ) );

// вывод сцены
if( SUCCEEDED( pd3dDevice->BeginScene() ) )
{

RenderText();

V( pd3dDevice->EndScene() );
}
}

 
     
 

//--------------------------------------------------------------------------------------
// обработка сообщений направленных нашему приложению
//--------------------------------------------------------------------------------------

LRESULT CALLBACK MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam,
bool* pbNoFurtherProcessing, void* pUserContext )
{

// тут пока ничего не нужно

return 0;
}

 
     
  //--------------------------------------------------------------------------------------
// Освобождение D3D9 ресурсов созданных в методе OnD3D9ResetDevice
//--------------------------------------------------------------------------------------

void CALLBACK OnD3D9LostDevice( void* pUserContext )
{

if( g_pFont )
g_pFont->OnLostDevice();

SAFE_RELEASE( g_pTextSprite );
}

 
     
  //--------------------------------------------------------------------------------------
// Освобождение D3D9 ресурсов созданных в методе OnD3D9CreateDevice
//--------------------------------------------------------------------------------------

void CALLBACK OnD3D9DestroyDevice( void* pUserContext )
{

SAFE_RELEASE( g_pFont );


}

 
     
  //--------------------------------------------------------------------------------------
// Инициализировать всё и перейти в цикл отрисовки
//--------------------------------------------------------------------------------------

INT StartD3DApp()
{
// Включить проверку памяти времени выполнения для отладочной конфигурации.

#if defined(DEBUG) | defined(_DEBUG)
_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
#endif

// Настроить функции обратного вызова
DXUTSetCallbackD3D9DeviceAcceptable( IsD3D9DeviceAcceptable );
DXUTSetCallbackD3D9DeviceCreated( OnD3D9CreateDevice );
DXUTSetCallbackD3D9DeviceReset( OnD3D9ResetDevice );
DXUTSetCallbackD3D9FrameRender( OnD3D9FrameRender );
DXUTSetCallbackD3D9DeviceLost( OnD3D9LostDevice );
DXUTSetCallbackD3D9DeviceDestroyed( OnD3D9DestroyDevice );
DXUTSetCallbackDeviceChanging( ModifyDeviceSettings );
DXUTSetCallbackMsgProc( MsgProc );
DXUTSetCallbackFrameMove( OnFrameMove );

// Задачи на будущее: Выполнять любые инициализации уровня приложения здесь

// Инициализировать DXUT и создать желаемое Win32 окно и Direct3D устройство для // // // приложения
DXUTInit( true, true ); // Обрабатывать параметры коммандной строки и показывать окна сообщений
DXUTSetHotkeyHandling( true, false, false ); // обрабатывать горячие клавиши по-умолчанию
DXUTSetCursorSettings( true, true ); // Отображать курсор и ограничивать его границы в полноэкранном режиме

HRESULT hr;
hr = DXUTCreateWindow( GameAppName ); // Создаем окно DirectX-приложения

SetWindowLong( DXUTGetHWND(), GWL_STYLE,
WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX); // Указываем // // // // некоторые дополнительные параметры окна - запрет кнопки разворачивания окна во // // весь экран

hr = DXUTCreateDevice( true, 800, 600 ); // создаем d3d-устройство, в оконном режиме, // // рабочая область 800х600 пикселей

// запуск цикла отрисовки
DXUTMainLoop();

// Задачи на будущее: Выполнять любую очистку уровня приложения здесь

return DXUTGetExitCode();

}

 
     
 

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

//--------------------------------------------------------------------------------------
// Освобождение D3D9 ресурсов созданных в методе OnD3D9ResetDevice
//--------------------------------------------------------------------------------------

void CALLBACK OnD3D9LostDevice( void* pUserContext )
{

if( g_pFont )
g_pFont->OnLostDevice();

SAFE_RELEASE( g_pTextSprite );
}

 
     
  Запишите Этот же код в структурированном виде удобном для чтения -  
     
  Этот же код в структурированном виде удобном для чтения должен выглядеть так -  
     
 

После того, как наберете этот код попробуйте выполнить сборку приложения.

Что еще нужно сделать, чтобы устранить ошибки компиляции -

1) Настроить проект для использования заголовочных и библиотечных файлов DirectX - мы это рассматривали еще в самом первом уроке

2) Подключить библиотеку DXUT - по аналогии с тем, как Вы подключали файлы openwebpage.h и .cpp из папки common - см. страницу 2

 

 
     
 

3) Добавить недостающие переменные - записать их в самом начале файла Fle.cpp после строк

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

следующий код -

ID3DXFont* g_pFont = NULL; // шрифт для вывода текста
ID3DXSprite* g_pTextSprite = NULL; // спрайт для обработки вызовов вывода текста
DWORD g_dwClearColor = 0xFF000000; // цвет для заполнения рабочей области окна

 
     
 

4) В файле FleDlg.cpp в методе void CFle2Dlg::OnLButtonUp(UINT nFlags, CPoint point)

строку кода

//StartD3DApp();

исправить на

StartD3DApp();

 
     
  Теперь при нажатии на кнопку <Играть> в окне оболочки, создается окно размером 804х622, заполненное черным и выводящее в левом верхнем углу статистику по FPS.  
     
  при нажатии на кнопку <Играть> в окне оболочки, создается окно размером 804х622, заполненное черным и выводящее в левом верхнем углу статистику по FPS  
     
  Я надеюсь, что Вы разобрались и у Вас всё получилось. Если нет - задавайте вопросы или перепроверьте все свои действия.  
     
  А теперь двинемся дальше - в следующем уроке мы рассмотрим как вывести начальную заставку для Вашей игры.  
     
     
  [содержание] [назад] [страница 3] [далее]  
     
подробнее


Отзывы о проектах Мега Информатик

Добро пожаловать странник интернета !

Вы можете оставить здесь свой отзыв о проекте Мега Информатик или о продуктах мною выпущенных.

Спасибо за внимание !

Некоторые пользователи уже оставили свои отзывы - можно почитать их здесь

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

[к содержанию]

Таблица ASC II кодов символов

Название Символ ASCII Спец.
Табулятор   &#009;  
Перевод строки   &#010;  
Возврат каретки   &#013;  
Пробел   &#032;  
Восклицательный знак ! &#033;  
Двойная кавычка " &#034; &quot;
Знак решетка # &#035;  
Доллар $ &#036;  
Процент % &#037;  
Амперсанд & &#038; &amp;
Одинарная кавычка ' &#039;  
Скобка левая круглая ( &#040;  
Скобка правая круглая ) &#041;  
Звездочка * &#042;  
Плюс + &#043;  
Запятая , &#044;  
Минус - &#045;  
Точка . &#046;  
Правый слэш / &#047;  
Цифры 0-9 &#048;-&#057;  
Двоеточие : &#058;  
Точка с запятой ; &#059;  
Меньше < &#060;  
Равно = &#061;  
Больше > &#062;  
Знак вопроса ? &#063;  
Знак собачка @ &#064;  
Прописные буквы A-Z &#065;-&#090;  
Скобка квадратная левая [ &#091;  
Левый слэш \ &#092;  
Скобка квадратная правая ] &#093;  
Степень ^ &#094;  
Знак подчеркивания _ &#095;  
Гравис ` &#096;  
Строчные буквы a-z &#097;-&#122;  
Фигурная скобка левая { &#123;  
Вертикальная черта | &#124;  
Фигурная скобка правая } &#125;  
Тильда ~ &#126; &tilde;
не определён  &#127;  
Евро &#128;  
не определён ? &#129;  
Одинарная нижняя кавычка &#130; &sbquo;
Символ функции ? &#131;  
Двойная нижняя кавычка &#132; &dbquo;
Многоточие &#133;  
Крест &#134; &dagger;
Двойной крест &#135; &Dagger;
Гачек ? &#136;  
Промилле &#137; &permil;
хз S &#138;  
Левая угловая одинарная кавычка &#139; &lsaquo;
Лигатура ОЕ ? &#140;  
не определён ? &#141;  
хз Z &#142;  
не определён ? &#143;  
не определён ? &#144;  
Одинарная левая кавычка &#145; &lsquo;
Одинарная правая кавычка &#146; &rsquo;
Двойная левая кавычка &#147; &ldquo;
Двойная правая кавычка &#148; &rdquo;
Пулька &#149;  
Короткий дефис &#150; &ndash;
Длинный дефис &#151; &mdash;
Тильда ? &#152; &tilde
Торговый знак &#153; &trade;
хз s &#154;  
Правая угловая одинарная кавычка &#155; &rsaquo;
Лигатура ое строчная ? &#156;  
не определён ? &#157;  
хз z &#158;  
Большой Y-умлаут Y &#159; &Yuml;
Неразрывный пробел   &#160; &nbsp;
Перевернутый восклицательный знак ? &#161; &ixcl;
Цент ? &#162; &cent;
Фунт ? &#163; &pound;
Валюта ¤ &#164; &curren;
Йена ? &#165; &yen;
Прерванная вертикальная черта ¦ &#166; &brvbar;
Параграф § &#167; &sect;
Умлаут ? &#168; &uml;
Копирайт © &#169; &copy;
Порядковое числительное женского рода ? &#170; &ordf;
Левая двойная угловая кавычка « &#171; &laquo;
Отрицание ¬ &#172; &not;
Мягкий дефис ­ &#173; &shy;
Зарегистрированный торговый знак ® &#174; &reg;
Макрон ? &#175; &macr;
Градус ° &#176; &deg;
Плюс-минус ± &#177; &plusmn;
Вторая степень ? &#178; &sup2;
Третья степень ? &#179; &sup3;
Акут ? &#180; &acuate;
Микро µ &#181; &micro;
Знак абзаца &#182; &para;
Средняя точка · &#183; &middot;
Седиль ? &#184; &cedil;
Первая степень ? &#185; &sup1;
Порядковое числительное мужского рода ? &#186; &ordm;
Правая двойная угловая кавычка » &#187; &raquo;
Дробь 1/4 ? &#188; &frac14;
Дробь 1/2 ? &#189; &frac12;
Дробь 3/4 ? &#190; &frac34;
Перевернутый вопросительный знак ? &#191; &iquest;
Большая А с грависом A &#192; &Agrave;
Большая А с акутом A &#193; &Aacute;
Большая А с циркумфлексом A &#194; &Acirc;
Большая А с тильдой A &#195; &Atilde;
Большая А с умлаутом A &#196; &Auml;
Большая А с кружком A &#197; &Aring;
Большая лигатура АЕ ? &#198; &AElig;
Большая С с седилем C &#199; &Ccedil;
Большая Е с грависом E &#200; &Egrave;
Большая Е с акутом E &#201; &Eacute;
Большая Е с циркумфлексом E &#202; &Ecirc;
Большая Е с умлаутом E &#203; &Euml;
Большая I с грависом I &#204; &Igrave;
Большая I c акутом I &#205; &Iacute;
Большая I c циркумфлексом I &#206; &Icirс;
Большая I с умлаутом I &#207; &Iuml;
хз ? &#208; &ETH;
Большая N с тильдой N &#209; &Ntilde;
Большая O с грависом O &#210; &Ograve;
Большая O с акутом O &#211; &Oacute;
Большая O с циркумфлексом O &#212; &Ocirc;
Большая O с тильдой O &#213; &Otilde;
Большая O с умлаутом O &#214; &Ouml;
Умножение ? &#215; &times;
Большая O со слэшем O &#216; &Oslash;
Большая U с грависом U &#217; &Ugrave;
Большая U с акутом U &#218; &Uacute;
Большая U с циркумфлексом U &#219; &Ucirc;
Большая U с умлаутом U &#220; &Uuml;
Большая Y с акутом Y &#221; &Yacute;
хз ? &#222; &THORN;
Лигатура SZ ? &#223; &szlig;
Строчная А с грависом a &#224; &agrave;
Строчная А с акутом a &#225; &aacute;
Строчная А с циркумфлексом a &#226; &acirc;
Строчная А с тильдой a &#227; &atilde;
Строчная А с умлаутом a &#228; &auml;
Строчная А с кружком a &#229; &aring;
Строчная лигатура АЕ ? &#230; &aelig;
Строчная С с седилем c &#231; &ccedil;
Строчная Е с грависом e &#232; &egrave;
Строчная Е с акутом e &#233; &eacute;
Строчная Е с циркумфлексом e &#234; &ecirc;
Строчная Е с умлаутом e &#235; &euml;
Строчная I с грависом i &#236; &igrave;
Строчная I с акутом i &#237; &iacute;
Строчная I c циркумфлексом i &#238; &icirс;
Строчная I с умлаутом i &#239; &eth;
хз ? &#240; &eth;
Строчная N с тильдой n &#241; &ntilde;
Строчная O с грависом o &#242; &ograve;
Строчная O с акутом o &#243; &oacute;
Строчная O с циркумфлексом o &#244; &ocirc;
Строчная O с тильдой o &#245; &otilde;
Строчная O с умлаутом o &#246; &ouml;
Деление ? &#247; &divide;
Строчная O со слэшем o &#248; &oslash;
Строчная U с грависом u &#249; &ugrave;
Строчная U с акутом u &#250; &uacute;
Строчная U с циркумфлексом u &#251; &ucirc;
Строчная U с умлаутом u &#252; &uuml;
Строчная Y с акутом y &#253; &yacute;
хз ? &#254; &thorn;
Строчная Y с умлаутом y &#255; &yuml;
далее

[к содержанию]

megainformatic live chat
Начать беседу
X
 

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



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


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