ПРОГРАМИРУЕМ 3D ГРАФИКУ ИСПОЛЬЗУЯ DirectX


DirectSD - часть 9


// Определить область ракурса на устройстве vd.dwX =0; // Левая сторона vd.dwY = 0; // Верх

vd.dwWidth = m_pTI-»iWidth; // Ширина vd.dwHeight = m_pTI-»iHeight; // Высота

// Задать масштаб, чтобы ракурс имел размер 2х2

// единицы модели

vd.dvScaleX = D3DVAL (m_pTI-»iWidth) / D3DVAL(2.0);

vd.dvScaleY = D3DVAL (m_pTI-»iHeight) / D3DVAL(2.0);

// Установить максимальные значения координат х и у

// равными 1,

// чтобы начало координат находилось в центре,

// а координаты х и у

// принимали значения из интервала от -1 до +1,

//то есть, от -интервал/2 до + интервал/2

vd.dvMaxX = D3 DVAL(1.0);

vd.dvMaxY = D3DVAL(1.0);

// Задать интервал значений по оси z vd.dvMinZ = D3DVAL(-5.0);

vd.dvMaxZ = D3DVAL(100.О);

// Применить параметры к ракурсу hr = m_pIViewport-»SetViewport (&vd) ;

ASSERT(SUCCEEDED(hr)) ;

Мы заполняем структуру D3DVIEWPORT, чтобы задать исходное состояние ракурса — используемую им физическую область устройства и значения масштабных коэффициентов для осей х и у. Я выбрал область размером 2х2 единицы и установил начало координат в центре, чтобы значения координат х и у лежали в интервале от -1 до +1. Кроме того, следует задать интервал координат по оси z — это важно при определении видимых объектов. Объекты, находящиеся за

Приложение DSDEval '^ЦЦ 315

максимальным или перед минимальным значением z, не будут воспроизводиться на экране. Подходите к делу разумно — старайтесь подобрать интервал, который как можно точнее ограничивает ваш макет, потому что при этом удается достичь максимальной точности величин из Z-буфера и избежать искажений для объектов, расположенных вблизи от камеры.

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

// Задать параметры визуализации.

// Создать буфер выполнения.

CExecute exi (m_pIDevice, m_pIViewport);

// Задать режимы закраски и заполнения. По ним Direct3D // выберет драйверы, которыми он будет пользоваться. // Значения по умолчанию не определены. exi.AddRenderState(D3DRENDERSTATE_FILLMODE,




Начало  Назад  Вперед



Книжный магазин