Пятница, 17.05.2024, 04:53
Приветствую Вас Гость | RSS
Поиск
Главная | Каталог статей | Регистрация | Вход
Direct3D. Разработка игр
Форма входа
Меню сайта

Категории каталога
Мои статьи [3]
Ваши статьи [37]
Сюда вы можете выставлять свои статьи (только для зарегистрированных пользователей)

Друзья сайта

Наш опрос
Как вам этот сайт?
Всего ответов: 188

Кто онлайн

Статистика

Главная » Статьи » Мои статьи

Инициализация в Direct3D 9.0
 Инициализация в Direct3D 9.0


Важнейшим вопросом для начинающего в Direct3D есть инициализация и первый запуск пустого приложения с чёрным экраном)))

Код пустого приложения в SDK весьма сложен и непонятен для того, кто только начал программировать на D3D. Да и это только в том случае, если вам удалось скачать нормальную версию SDK. В противном случае (как в моем) вам придется начинать изучать Direct3D(д3д) самим и без помощи. Конечно же можно обратится к форумам и разнообразным сайтам, но этот процесс будет длится очень долго, и в конце концов не принесет желаемого результата.

Составив код из как минимум 5 книг и как максимум 127 сайтов, мне удалось написать простенький модуль на Visual C++ 6, который при подключении к проекту сам выполняет инициализацию. Вам нужно только прописать три простеньких процедуры и добавить соответствующие библиотеки к проекту. В модуле кроме самой инициализации, прописаны также освещение, текстурирование, материалы, а также несколько констант, которые упростят жизнь вам и вашим близким)))

Я предполагаю, что у того, кто читает эту статью есть хоть какое-то понятие о программировании на С++, и конечно же сам компилятор. Модуль и програмка-презентация были написаны на Visual C++ 6, так что лучше всего использовать именно этот компилятор. Сам .h-файл модуля можно скачать из вкладки Файлы->Program Files. Также предполагается, что у вас есть в наличии хоть какие-то папки Lib и Include с SDK, но если это не так, то их также можно скачать. Не уверен, что они из последней версии SDK, но это именно те, которые использую я (конечно же Direct3D 9.0). Я б с радостью выставил и сам SDK, но к сожалению осталось только 30 метров памяти на сайте. Постараюсь найти ссылку, с которой скачивал, и выставить как можно скорее.

Лично я познакомился c Visual C++, Direct3D, и вообще с самим языком С в один и тот же день, и вначале не понимал абсолютно ничего; хотя и сейчас понимаю далеко не всё))). Так что объяснять буду так, как хотел бы, чтобы объяснили мне в тот день. Ну, что ж, начнем!


Устанавливаем Visual C++6.
 
Скачиваем с этого сайта rar-архив includeh.rar и распаковываем куда-нибудь.
 
Скачиваем с того же сайта doomcross3d.rar и распаковываем в куда-нибудь2 или в тот же куда-нибудь))).
 
Скачиваем с этого сайта rar-архив dinamic.rar и распаковываем в куда-нибудь3.
 
Запускаем Visual C++...
А дальше начинается самое интересное. Во-первых, нужно указать где находятся наши DoomCoross®3D.h а также Lib и Include, чтобы компилятор мог найти путь к ним. Так что выбираем Tools->Options->Directories жмем на Show directories for: и выбираем Include files. Жмем на кнопку New, которая находится сразу же под этой вкладкой. Дальше нажимаем на три точки, которые появляются около пустого поля; выбираем папку Include, которая должна находится в //куда-нибудь(или где-то в другом месте))). Потом опять жмем New. Точно так же указываем путь к DoomCross®3D.h. После этой сложнейшей операции жмем еще раз Show directories for: и теперь выбираем Library files. Указываем в трёх точках путь к папке Lib. После этих действий нажимаем ОК и навсегда забываем об этом окне)))
Далее... Сам проект в С++6 состоит из Workspace`а и C++ Source file`а, а также многих других файлов(.h .cpp), которые подключаются к Workspace. Так что теперь создаем Workspace. Для этого жмем File->New->Projects и выбираем Win32 Application, то есть создаем проект под платформу Windows. Вводим что-нибудь в Project name. Например INIT. Кликаем ОК, потом появляется окно, которое не читаем и быстро жмем Finish))), потом опять появляется окно, на котором нужно нажать ОК. Теперь у нас создан новый проект. Нужно создать также .cpp файл, в котором собственно мы и будем вводить сам текст программки. Так что нажимаем File->New->Files, выбираем C++ Source file, и вводим что-то в File name, например INIT_SRC.
Мы создали проект и добавили к нему файл. Дальше – круче))) Нам нужно вставить в папку с нашей программкой файл под названием d3dx9_32.dll, который мы распаковали в куда-нибудь3. То есть копируем его и вставляем в РАСПОЛОЖЕНИЕС++:\MyProjects\ПАПКА С НАЗВАНИЕМ ПРОЕКТА(в нашем случае например INIT)\Debug , которая на данный момент является пустой.
Пока что всё идет нормально и без глюков. Но это только пока))) Теперь подключаем к проекту нужные библиотеки. Жмем Project->Settings->Link; туда, где написано Object/library modules: вставляем следующее: d3d9.lib d3dx9.lib и жмем ОК. Эти библиотеки нужно подключать каждый раз при создании нового проекта, иначе он не будет работать.
 Наконец-то все приготовления завершены и можно приступать к программированию. Для этого копируем следующий код и вставляем в текстовое окно нашей программы:


//------------------------------------------------------------------------------
 
#include <DoomCross®3D.h>
 
 void OPTIONS ()
{
GAMENAME="DoomCross Software®";
 }
void LOADING ()
{
D3DXMatrixPerspectiveFovLH(&PROJ, D3DX_PI * 0.6f, 1.3f, 1.0f, 10000.0f);
DEVICE->SetTransform(D3DTS_PROJECTION, &PROJ);
}
void RENDER ()
{
DEVICE->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0, 1.0f, 0 );
DEVICE->BeginScene();
DEVICE->EndScene();
DEVICE->Present(0, 0, 0, 0);
if (KEYS[VK_ESCAPE]) {SendMessage(hWnd,WM_CLOSE,0,0);}
}
 
//------------------------------------------------------------------------------


В принципе, если сейчас скомпилировать проект, то экран почернеет, и станет весело))), то есть теперь вы относитесь к той небольшой части населения нашей планеты, кому удалось инициализировать Direct3D!!! Чтобы скомпилировать приложение жмем Build->Execute, если что-то появляется жмем ОК. Чтобы выйти из приложения нажимаем Esc.

Весьма просто по сравнению с тем, что вы видели до этого времени, не так ли? Теперь объясню работу программки.

Функция OPTIONS запускается перед началом программы, то есть до инициализации д3д. В ней мы задаем название приложения. В ней также можно задавать например, размеры окна или что-то еще, но это пока не прописано в модуле.
Функция LOADING запускается после инициализации д3д. Здесь задается матрица проекции. В ней можно также задавать освещение, материалы, загружать текстуры… и т. д. и т. п.)))
Функция RENDER запускается постоянно. В ней очищается экран, и записана функция выхода при нажатии Esc. Здесь происходит вся работа по прорисовке изображения. Если вы хотите что-то нарисовать, то делать это нужно именно здесь, а точнее между DEVICE->BeginScene(); и DEVICE->EndScene();

Более детально все функции, которые используются в программке, описаны в книгах, которые качаем с этого сайта. Подробное рассмотрение модуля DoomCross®3D.h обязательно будет в следующих статьях. Все доработки будут выставлены на сайте.




DoomCross. 09.12.2007.

Категория: Мои статьи | Добавил: DoomCross (10.12.2007)
Просмотров: 9189 | Комментарии: 8 | Рейтинг: 4.2/9 |
Всего комментариев: 7
7 ghmbncds  
0
http://xara-web.ru Xara Net Designer — программа ради изготовления веб-сайтов. Это программное порука для ПК делает сайты.

6 Moon  
0
super

5 frozlok  
0
"...теперь вы относитесь к той небольшой части населения нашей планеты, кому удалось инициализировать Direct3D..."
спасибо автору классный сайт

4 ***Юриг (р@ботаю под прикрытие  
0
Types pointed to are unrelated; conversion requires reinterpret_cast, C-
style cast or function-style cast

ga 4To TaKoe, 6/l9?


3 guel  
0
кто знает где скачать d3dx9_37.dll

2 Панда  
0
Судя по ошибкам, у вас в настройках проекта задано использование юникода (двухбайтовые charы), а "фирменный файл" на это не расчитан. Попробуйте порыться в настройках проекта и отключить юникод.

1 ЩА_УБИЮСЬ((  
0
Да что такое?? Почему одни ерроры по поводу этого фирменного файла???
c:\documents and settings\kirufka\рабочий стол\madnessgame\source\include\doomcross®3d.h(341) : error C2440: 'initializing' : cannot convert from 'LPSTR' to 'LPCWSTR'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
c:\documents and settings\kirufka\рабочий стол\madnessgame\source\include\doomcross®3d.h(352) : error C2440: '=' : cannot convert from 'LPSTR' to 'LPCWSTR'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
c:\documents and settings\kirufka\рабочий стол\madnessgame\source\include\doomcross®3d.h(356) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [37]' to 'LPCWSTR'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
c:\documents and settings\kirufka\рабочий стол\madnessgame\source\include\doomcross®3d.h(373) : error C2664: 'CreateWindowExW' : cannot convert parameter 2 from 'LPSTR' to 'LPCWSTR'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
c:\documents and settings\kirufka\рабочий стол\madnessgame\source\include\doomcross®3d.h(407) : error C2664: 'UnregisterClassW' : cannot convert parameter 1 from 'LPSTR' to 'LPCWSTR'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
c:\documents and settings\kirufka\рабочий стол\madnessgame\source\include\doomcross®3d.h(459) : error C2664: 'D3DXCreateTextureFromFileW' : cannot convert parameter 2 from 'LPCSTR' to 'LPCWSTR'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
c:\documents and settings\kirufka\рабочий стол\madnessgame\source\include\doomcross®3d.h(532) : error C2664: 'D3DXLoadMeshFromXW' : cannot convert parameter 1 from 'char *' to 'LPCWSTR'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Doom†Cross Software ® 2024
Создать бесплатный сайт с uCoz