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


DirectSD - часть 15


Для растровых генераторов монохромного и RGB-режимов вам придется написать несколько отличающийся код. Растровый генератор RGB-режима осуществляет интерполяцию отдельных RGB-составляющих; генератор монохромного режима интерполирует только оттенки одного цвета, интенсивность которого изменяется от черного до белого с несколькими промежуточными значениями. Если вы пользуетесь растровым генератором RGB-режима, цвета вершин указываются непосредственно в виде RGB-троек, при этом допускаются любые цветовые величины. Для нашего теста я сделал одну вершину красной, другую — зеленой, а третью — синей. Тест показывает, каким образом растровый генератор RGB-режима производит плавные переходы между цветами. Определение вершин для растрового генератора RGB-режима выглядит следующим образом:

void CTestWnd::Test2RGB() {

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

D3DVAL(10), D3DVAL(10), D3DVAL(2), D3DVAL(1),

// Цвет объекта и зеркальный цвет

RGBA_MAKE(255, О, О, 255),

RGBA_MAKE(255, 255, 255, 255),

// u, v текстуры

D3DVAL(0), D3DVAL(0) }, { D3DVAL(m_pTI-»iWidth - 10), D3DVAL ( 10),

D3DVAL(2), D3DVAL(1),

RGBA_MAKE(0, 0, 255, 255),

RGBA_MAKE(255, 255, 255, 255),

D3DVAL(0), D3DVAL(0)

/b> йЙ? Глава 13. DirectSD

},

{ D3DVAL( 10), D3DVAL(m_pTI-»iHeight - 10), D3DVAL(2), D3DVAL(1), RGBA_MAKE(0, 255, 0, 255), RGBA_MAKE(255, 255, 255, 255), D3DVAL(0), D3DVAL(0) } };

int nVerts = sizeof(vShape) / si'2eof (D3DTLVERTEX) ;

Описание каждой вершины состоит их экранных координат, выраженных в виде х, у, z и 1/w, за которыми следует простой и зеркальный цвета вершины, а затем — параметры и и v для текстуры, которая в данном примере не используется.

Подготовка буфера выполнения выглядит чрезвычайно просто:

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

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

// Добавить команды для вершин, чтобы каждая //из них была преобразована и освещена ex.AddProcess(nVerts, О, D3DPROCESSVERTICES_COPY I D3DPROCESSVERTICES_UPDATEEXTENTS);




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



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