Основы построения 3-х мерных сцен с использованием библиотеки DirectX. Макушкина Л.А - 13 стр.

UptoLike

15
-0.5f, 0.5f, -0.5f, 0x00ff0000,
-0.5f, 0.5f, -0.5f, 0x00ff0000,
0.5f, -0.5f, -0.5f, 0x00ff0000,
0.5f, 0.5f, -0.5f, 0x00ff0000,
.. Грань 2
0.5f, -0.5f, -0.5f, 0x0000ff00,
0.5f, 0.5f, -0.5f, 0x0000ff00,
0.5f, -0.5f, 0.5f, 0x0000ff00,
0.5f, 0.5f, 0.5f, 0x0000ff00,
// Грань 3
0.5f, -0.5f, 0.5f, 0x000000ff,
0.5f, 0.5f, 0.5f, 0x000000ff,
-0.5f, -0.5f, 0.5f, 0x000000ff,
-0.5f, 0.5f, 0.5f, 0x000000ff,
// Грань 4
-0.5f, -0.5f, 0.5f, 0x00ffff00,
-0.5f, 0.5f, 0.5f, 0x00ffff00,
-0.5f, -0.5f, -0.5f, 0x00ffff00,
-0.5f, 0.5f, -0.5f, 0x00ffff00,
// Грань 5
-0.5f, 0.5f, -0.5f, 0x0000ffff,
-0.5f, 0.5f, 0.5f, 0x0000ffff,
0.5f, 0.5f, -0.5f, 0x0000ffff,
0.5f, 0.5f, 0.5f, 0x0000ffff,
// Грань 6
0.5f, -0.5f, -0.5f, 0x00ff00ff,
0.5f, -0.5f, 0.5f, 0x00ff00ff,
-0.5f, -0.5f, -0.5f, 0x00ff00ff,
-0.5f, -0.5f, 0.5f, 0x00ff00ff,
};
void * pBuf;
// Создание буфера вершин
HRESULT hRes = pD3DDevice->CreateVertexBuffer(sizeof (sVertex) *
iVertsNum, 0 , D3DFVF_XYZ|D3DFVF_DIFFUSE, D3DPOOL_DEFAULT,
&vBuffer, 0);
if (FAILED(hRes)) return;
// Блокировка буфера вершин и заполнение
hRes = vBuffer->Lock(6, sizeof(sVertex) * iVertsNum, &pBuf, 0);
if (FAILED(hRes)) return;
memcpy(pBuf, svVortexList, sizeof(sVertex) * iVertsNum) ;
vBuffer->Unlock();
// Массив индексов построения треугольника const unsigned short
Idxes[]={ 0,1,2,2,1,3,
4,5,6,6,5,7,
8,9,10,10,9,11,
12,13,14,14,13,15,
16,17,18,18,17,19,
20,21,22,22,21,23
};
// Создание буфера индексов
    -0.5f, 0.5f, -0.5f, 0x00ff0000,
    -0.5f, 0.5f, -0.5f, 0x00ff0000,
    0.5f, -0.5f, -0.5f, 0x00ff0000,
    0.5f, 0.5f, -0.5f,   0x00ff0000,
    .. Грань 2
    0.5f, -0.5f, -0.5f, 0x0000ff00,
    0.5f, 0.5f, -0.5f,   0x0000ff00,
    0.5f, -0.5f, 0.5f,   0x0000ff00,
    0.5f, 0.5f, 0.5f,    0x0000ff00,
    // Грань 3
    0.5f, -0.5f, 0.5f,   0x000000ff,
    0.5f, 0.5f, 0.5f,    0x000000ff,
    -0.5f, -0.5f, 0.5f, 0x000000ff,
    -0.5f, 0.5f, 0.5f,   0x000000ff,
    // Грань 4
    -0.5f, -0.5f, 0.5f, 0x00ffff00,
    -0.5f, 0.5f, 0.5f,   0x00ffff00,
    -0.5f, -0.5f, -0.5f, 0x00ffff00,
    -0.5f, 0.5f, -0.5f, 0x00ffff00,
    // Грань 5
    -0.5f, 0.5f, -0.5f, 0x0000ffff,
    -0.5f, 0.5f, 0.5f,   0x0000ffff,
    0.5f, 0.5f, -0.5f,   0x0000ffff,
    0.5f, 0.5f, 0.5f,    0x0000ffff,
    // Грань 6
    0.5f, -0.5f, -0.5f, 0x00ff00ff,
    0.5f, -0.5f, 0.5f,   0x00ff00ff,
    -0.5f, -0.5f, -0.5f, 0x00ff00ff,
    -0.5f, -0.5f, 0.5f, 0x00ff00ff,
  };
  void * pBuf;
  // Создание буфера вершин
  HRESULT hRes = pD3DDevice->CreateVertexBuffer(sizeof (sVertex) *
     iVertsNum, 0 , D3DFVF_XYZ|D3DFVF_DIFFUSE, D3DPOOL_DEFAULT,
     &vBuffer, 0);
  if (FAILED(hRes)) return;
  // Блокировка буфера вершин и заполнение
  hRes = vBuffer->Lock(6, sizeof(sVertex) * iVertsNum, &pBuf, 0);
  if (FAILED(hRes)) return;
  memcpy(pBuf, svVortexList, sizeof(sVertex) * iVertsNum) ;
  vBuffer->Unlock();
  // Массив индексов построения треугольника const unsigned short
     Idxes[]={ 0,1,2,2,1,3,
  4,5,6,6,5,7,
    8,9,10,10,9,11,
    12,13,14,14,13,15,
    16,17,18,18,17,19,
    20,21,22,22,21,23
};
// Создание буфера индексов


                                   15