Введение

<Уголок DirectX> <Следующая часть>


От автора

На написание этого текста меня сподвигли тяжкие усилия ассемблирования Майкрософтовского текста со скупыми примерами из ангоязычной части ИНета, а также со свои собственными мыслями.
Если Вы пробуете, но у Вас что-то не получается или если Вы с чем-то не согласны, пишите мне - давайте разбираться вместе.
Как бы там ни было,

Приятного программирования, Antiloop

 

Обзор Direct3D

Прежде, чем начать программировать Direct3D, давайте познакомимся, что это такое и с чем его едят. Вот как преподносит простому пользователю свое детище сама Microsoft:

"Direct3D был разработан для программирования игр мирового класса и трехмерной интерактивной графики для компьютера, работающего под управлением Microsoft Windows. Его миссия - дать устройство-независимый доступ к программированию совсем различного видео-3D оборудования. Таким образом, Direct3D становится стандартом для программирования 3D устройств."

Ну что сказать? Цели своей они естесственно добились. Сегодня 99.9% видеокарт прелестно работают с Direct3D. Однако Microsoft есть Microsoft - и в интерфейсе программирования Direct3D есть свои баги и глюки. Результатом стало появление других стандартных интерфейсов для программирования 3D графики. Например, весьма популярный сейчас OpenGL, разработанный компанией Silicon Graphics. Многие известные игры используют OpenGL движки, да хоть тот же Quake II. Еще один известный интерфейс - Glide, бал разработан компанией 3DFX Interactive и поддерживается только видеоакселлераторами на базе ихнего чипсета. Для всех этих интерфейсов существуют свои SDK с их помощью любой может программировать 3D графику.

Однако вернемся к D3D. Как вы может быть слышали, существует Direct3D Retained Mode и Direct3D Immediate Mode. Что это такое? Сейчас расскажу.

  • D3D Retained Mode (D3DRM для краткости) - это набор высокоуровневых API для работы с 3D графикой. Он предназначен для быстрой разработки приложений, а также в нем встроены всякие навороты типа поддержки иерархий и анимации.
  • D3D Immediate Mode (D3DIM) - это набор низкоуровневых API для работы с 3D графикой. Он предназначен для устройство-независимого низкоуровнего "общения" с видео-оборудованием. Все, что вы можете сделать с помощью D3D вы сможете сделать через D3DIM. К слову сказать, весь D3DRM построен на D3DIM.

В этом учебнике, мы будем изучать Direct3D Immediate Mode.

D3DIM основан на вершинах, многоугольниках и командах, которые ими управляют. Проще не придумаешь. Команды дают доступ к действиям над вершинами и многоугольниками - трансформации, освещению, наложению текстур.

Эмуляция. По своей сути, D3D предназначен для работы с 3D акселлераторами. Однако, если конечный пользователь не обладает этой небольшой платкой, Direct3D позволяет программно эмулировать функции, которые по-хорошему выполняются на аппаратном уровне. Не мне вам говорить что при этом получается. Программист может при этом говорить, какие функции D3D должен эмулировать.

Архитектуру работы D3D можно изобразить вот на таком рисунке:
Как видите D3D является как бы "прослойкой", которая позволяет общаться приложению Win32 с видеоаппаратурой при помощи стандартизированных функций. Кроме того, есть еще HAL (hardware-abstraction layer) это связка устройство-драйвер. Благодаря ей, приложение освобождается от выполнения специфических команд устройства.
DirectX работает с HAL и поэтому когда что-либо сбоит служба технической поддержки корпорации Microsoft первым делом спрашивает самые ли свежие драйверы стоят у пользователя.

Direct3D тесно связан с DirectDraw компонентом DirectX. Поверхности DirectDraw используются, как целевые для рендеринга (т.е. на них происходит рендеринг) и как z-буфера.

Итак, если Вы готовы, начнем!

 

Подготовка формы

Сделаем маленькое приложение-пример, называемое "Треугольник". Как не трудно догадаться, оно будет рендерить сцену с треугольником.

Откройте Visual Basic IDE, создайте новый проект, назовите его Triangle и подключите в "References" библиотеку DirectX 7 For Visual Basic. Теперь вы можете работать с DirectX.
Установите свойства главной формы наподобии этим:

BorderStyle = 1 'Fixed Single
Caption = "Triangle"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 213
ScaleMode = 0 'User
Scale Width = 254
StartUpPosition = 3 'Windows Default

Чтобы показать окно приложения на экране, добавьте следующую строку в процедуру Form_Main:

Me.Show

Теперь, когда форма готова, можно приступать к созданию объектов DirectX.

<Вверх>