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


DirectSD - часть 16


// Добавить команды для рисования фигуры ex.AddTriangle(О, 1, 2);

Я не привожу копию экрана, потому что оттенков серого недостаточно для передачи хорошей картинки. Вам придется самостоятельно запустить D3DEval и посмотреть, как выглядит окно приложения. Оставшаяся часть кода совпадает с примером Test1, начинающимся на стр. 318.

При использовании растрового генератора монохромного режима цвет грани задается с помощью материала:

void CTestWnd::Test2MONO() {

CMaterial mShape;

mShape.Create(m_pIEngine, m_pIDevice) ;

mShape.SetColorf0.0, 1.0, 0.0); // Светло-зеленый

Теперь можно описать вершины. Их цвета задаются с использованием только синей составляющей цветовой структуры, ее значение определяет интенсивность оттенка цвета материала. Я постарался подобрать вершины так, чтобы добиться наибольшего разнообразия:

Приложение D3DEval ^И 323

D3DTLVERTEX vShape [] = { { // x, у, z, 1/w

D3DVAL(10), D3DVAL(10), D3DVAL(2), D3DVAL(1), // Цвет объекта и зеркальный цвет

RGBA_MAKE(0, 0, 64, 0), RGBA_MAKE(0, 0, 64, 0), // u, v текстуры D3DVAL(0), D3DVAL(0)

),

( D3DVAL(m_pTI-»iWidth - 10) , D3DVAL( 10), D3DVAL(2), D3DVAL(1),

RGBA_MAKE(0, 0, 255, 0), RGBA_MAKE(0, 0, 255, 0), D3DVAL(0), D3DVAL(0)

},

( D3DVAL( 10), D3DVAL(m_pTI-»iHeight - 10),

D3DVAL(2), D3DVAL(1),

RGBA_MAKE(0, 0, 0, 0), RGBA_MAKE(0, 0, 0, 0),

D3DVAL(0), D3DVAL(0) } i ;

Перед обработкой вершин необходимо внести в буфер выполнения описание материала:

// Создать буфер выполнения CExecute ex (m_pIDevice, m_pIViewport) ;

// Добавить в буфер данные о вершинах ex.AddVertices(vShape, nVerts);

// Добавить описание материала в буфер выполнения ex.AddMaterial(mShape) ;

// Добавить команду обработки вершин, чтобы каждая // из них

// была преобразована и освещена

ex.AddProcess(nVerts, О, D3DPROCESSVERTICES_COPY¦ D3DPROCESSVERTICES_UPDATEEXTENTS) ;

Вся оставшаяся часть кода совпадает с тестом для RGB-режима. Как видите, с растровым генератором RGB-режима работать очень просто. Для монохромного режима требуется несколько больше усилии, потому что в нем считается, что каждая грань имеет всего один цвет. Для получения нормальной скорости работы необходимо сгруппировать в бу4)ере выполнения все грани одного цвета.




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



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