Составители:
Рубрика:
27
Triangle[4].y=0.5f;
Triangle[4].z=0.1f;
Triangle[5].x=0.5f;
Triangle[5].y=0.5f;
Triangle[5].z=0.1f;
Triangle[6].x=0.5f;
Triangle[6].y=-0.5f;
Triangle[6].z=0.1f;
// Заполняем вершины цветами
Triangle[0].color = D3DCOLOR_XRGB(0, 0, 255);
Triangle[1].color = D3DCOLOR_XRGB(0, 255, 0);
Triangle[2].color = D3DCOLOR_XRGB(255, 0, 0);
Triangle[3].color = D3DCOLOR_XRGB(255, 0, 255);
Triangle[4].color = D3DCOLOR_XRGB(0, 255, 255);
Triangle[5].color = D3DC0L0R_XRGB(255, 255, 0);
Triangle[6].color = D3DCOLOR_XRGB(255, 255, 255);
// Создаем интерфейс буфера вершин
void * pBuf;
if (FAILED(pD3DDevice->CreateVertexBuffer(sizeof(sVertex) * 7,
D3DUSAGE_WRITEONLY, D3DFVF_XYZ|D3DFVF_DIFFUSE, D3DPOOL_DEFAULT,
svTriangleBuffer, 0))) return FALSE;
// Блокировка и заполнение вершинного буфера
if (FAILED(vTriangleBuffer->Lock(0, sizeof(sVertex) * 7, &pBuf, 0)))
return FALSE;
memcpy(pBuf, Triangle, sizeof(sVertex) * 7);
vTriangleBuffer->Unlock();
// Функция SetView задает матрицу отображения SetView();
Первые три вершины в массиве Triangle описывают треугольник.
Остальные четыре — это два треугольника, образующие прямоугольник. При
этом треугольники рисуются по вершинам 3, 4, 5 и 3, 5, 6. Далее задается цвет
вершин. Обратите внимание, что цвет каждой вершины разный.
Далее создается интерфейс вершин с помощью метода CreateVertexBuffer.
Для заполнения этого буфера блокируем буфер и переносим в него значения
вершин из массива Triangle с помощью WinAPI-функции memсру. В самом конце
вызывается функция SetView.
void SetView()
{
D3DMATRIX View={
1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 1, 5, 1,
};
pD3DDevice->SetTransform(D3DTS_VIEW, &View);
}
Отображение сцены будет происходить по событию WM_PAINT:
case WM_PAINT:
Triangle[4].y=0.5f; Triangle[4].z=0.1f; Triangle[5].x=0.5f; Triangle[5].y=0.5f; Triangle[5].z=0.1f; Triangle[6].x=0.5f; Triangle[6].y=-0.5f; Triangle[6].z=0.1f; // Заполняем вершины цветами Triangle[0].color = D3DCOLOR_XRGB(0, 0, 255); Triangle[1].color = D3DCOLOR_XRGB(0, 255, 0); Triangle[2].color = D3DCOLOR_XRGB(255, 0, 0); Triangle[3].color = D3DCOLOR_XRGB(255, 0, 255); Triangle[4].color = D3DCOLOR_XRGB(0, 255, 255); Triangle[5].color = D3DC0L0R_XRGB(255, 255, 0); Triangle[6].color = D3DCOLOR_XRGB(255, 255, 255); // Создаем интерфейс буфера вершин void * pBuf; if (FAILED(pD3DDevice->CreateVertexBuffer(sizeof(sVertex) * 7, D3DUSAGE_WRITEONLY, D3DFVF_XYZ|D3DFVF_DIFFUSE, D3DPOOL_DEFAULT, svTriangleBuffer, 0))) return FALSE; // Блокировка и заполнение вершинного буфера if (FAILED(vTriangleBuffer->Lock(0, sizeof(sVertex) * 7, &pBuf, 0))) return FALSE; memcpy(pBuf, Triangle, sizeof(sVertex) * 7); vTriangleBuffer->Unlock(); // Функция SetView задает матрицу отображения SetView(); Первые три вершины в массиве Triangle описывают треугольник. Остальные четыре — это два треугольника, образующие прямоугольник. При этом треугольники рисуются по вершинам 3, 4, 5 и 3, 5, 6. Далее задается цвет вершин. Обратите внимание, что цвет каждой вершины разный. Далее создается интерфейс вершин с помощью метода CreateVertexBuffer. Для заполнения этого буфера блокируем буфер и переносим в него значения вершин из массива Triangle с помощью WinAPI-функции memсру. В самом конце вызывается функция SetView. void SetView() { D3DMATRIX View={ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 5, 1, }; pD3DDevice->SetTransform(D3DTS_VIEW, &View); } Отображение сцены будет происходить по событию WM_PAINT: case WM_PAINT: 27
Страницы
- « первая
- ‹ предыдущая
- …
- 23
- 24
- 25
- 26
- 27
- …
- следующая ›
- последняя »