Библиотека knigago >> Компьютеры: Операционные системы >> Windows >> DirectX 8. Начинаем работу с DirectX Graphics


Книга "Потусторонний. Книга 1 (СИ)" Юрия Погуляя — это захватывающая фэнтезийная история, которая перенесет вас в уникальный и интригующий мир. Роман вращается вокруг главного героя, Алекса, который оказывается втянут в опасное путешествие в Потусторонний мир, потустороннюю сферу, населенную могущественными существами и тайнами. По мере того как Алекс отправляется в путь, он обнаруживает, что его собственная личность и судьба тесно переплетены с судьбой Потустороннего мира. С...

Сергей Ваткин , Kelly Dempski , Johnny Watson , Константин Поздняков - DirectX 8. Начинаем работу с DirectX Graphics

DirectX 8. Начинаем работу с DirectX Graphics
Книга - DirectX 8. Начинаем работу с DirectX Graphics.  Сергей Ваткин , Kelly Dempski , Johnny Watson , Константин Поздняков  - прочитать полностью в библиотеке КнигаГо
Название:
DirectX 8. Начинаем работу с DirectX Graphics
Сергей Ваткин , Kelly Dempski , Johnny Watson , Константин Поздняков

Жанр:

Современные российские издания, Литература ХXI века (эпоха Глобализации экономики), Windows, Программирование графики

Изадано в серии:

неизвестно

Издательство:

неизвестно

Год издания:

-

ISBN:

неизвестно

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "DirectX 8. Начинаем работу с DirectX Graphics"

Аннотация к этой книге отсутствует.

Читаем онлайн "DirectX 8. Начинаем работу с DirectX Graphics". [Страница - 4]

class="book">Автор: voxatu. 

DirectX 8: Создание и текстурирование простого трехмерного объекта

Автор: voxatu
Ты уже умеешь инициализировать Direct3D, а значит можно на этой базе создавать трехмерные объекты. Чтобы было совсем интересно, натянем на наш трехмерный объект текстуру и заставим его вращаться!!! Кроме того, воспользуемся фильтрацией текстур и MipMapping'ом, чтобы получить более реалистичный результат почти без потери быстродействия. Попутно, научимся работать со вспомогательной библиотекой Direct3DX. Пример можешь скачать ЗДЕСЬ.

Книгаго: DirectX 8. Начинаем работу с DirectX Graphics. Иллюстрация № 1 Итак, приступим. За "трехмерный объект" возьмем правильную четырехугольную пирамиду, а за текстуру — подредактированную фотографию каменной стены (первоначальный вариант текстуры взят с сайта http://www.3dcafe.com/, на котором собрано огромное количество различных бесплатных для скачивания изображений).

Функции WinMain(), MessageProc() и InitD3D() будут очень похожи на аналогичные функции программы из предыдущей статьи, поэтому я буду объяснять, в основном, только модифицированные их части. Структура программы немного изменилась. Теперь более грамотно обрабатываются ошибки, которые могут возникнуть при выполнении той или иной части программы.

Рассмотренные функции исходника:

Функция WinMain()

Функция Initialization()

Функция InitD3D()

Функция InitTexture()

Функция InitScene

Функция DoMatrices()

Функция RenderScene()

Функция Deinitialization()

Функция MessageProc()

Функция WinMain()
Главная функция нашего приложения. Практически аналогична одноименной функции из предыдущей статьи. Единственное, что сильно изменилось — цикл обработки сообщений. Также, вынесены в отдельные функции инициализация и деинициализация приложения.

if (Initialization(hWnd)) {

 ShowWindow(hWnd, nCmdShow);

 UpdateWindow(hWnd);

 MSG msg;

 ZeroMemory(&msg, sizeof(msg));

 while(msg.message != WM_QUIT) {

  if (PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE)) {

   TranslateMessage(&msg);

   DispatchMessage(&msg);

  } else RenderScene();

 }

}

Deinitialization();

Если инициализация проходит успешно, окно приложения отображается на экране и начинается цикл обработки сообщений, иначе деинициализация и выход из программы. Функция PeekMessage() проверяет очередь сообщений для текущей нити процесса и, если таковые имеются, помещает одно из них в структуру MSG. Флаг PM_REMOVE говорит о том, что сообщение из очереди удаляется, т.е. на нас возлагается ответственность его корректной обработки в любом случае. Это мы и делаем в следующих двух строчках. Если же очередь сообщений пуста, вызывается функция RenderScene(), которая, согласно ее названию, рендерит очередной кадр сцены. Как только поступает сообщение WM_QUIT, происходит деинициализация приложения (функция Deinitialization()).

Функция Initialization()
Осуществляет грамотную (т.е. с учетом ошибок) инициализацию D3D, текстур и сцены. Замечу, что все функции нашего приложения, в которых может возникнуть ошибка, имеют тип BOOL. Рассмотрим программный код:

CurrentFilter = D3DTEXF_NONE;

if (!InitD3D(hWnd)) return FALSE;

if (!InitTexture()) {

 MessageBox(NULL, "Не найден файл текстуры!", "Ошибка", MB_ICONERROR);

 return FALSE;

}

if (!InitScene()) return FALSE;

return TRUE;

Что такое CurrentFilter? Забегая вперед, скажу, что наша программа будет использовать фильтрацию текстур, причем можно будет переключаться между различными фильтрами. Неплохо для первой программы с использованием D3D? ;-) Итак, первая строка кода говорит, что по умолчанию фильтром является D3DTEXF_NONE, т.е. фильтрация не используется. Затем вызываются три функции дополнительной инициализации, причем, если хотя бы в одной из них возникнет ошибка, функция Initialization() вернет значение FALSE, что в свою очередь остановит выполнение программы (вспомни функцию WinMain()) и приведет к деинициализации. Если функция InitTexture() возвращает значение FALSE, значит не удалось найти файл текстуры и перед аварийным завершением программы необходимо вывести предупредительное сообщение: MessageBox(NULL, "Не найден файл текстуры!", "Ошибка", MB_ICONERROR);

Функция InitD3D()
Согласно названию, эта функция инициализирует D3D %) Перед созданием устройства рендеринга, необходимо настроить параметры D3DPRESENT_PARAMETERS. К параметрам, которые мы использовали в предыдущем приложении добавилось лишь две строки:

p_p.EnableAutoDepthStencil = TRUE;

p_p.AutoDepthStencilFormat = --">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.