На этом уроке, который является логическим продолжением предущего, мы превратим наш треугольник в квадрат.
Для этого нам надо сделать три шага. Во-первых, нам надо добавить к трем существующим вершинам еще три (так как наш квадрат представляется как объединение двух треугольков). Во-вторых, при создании вершинного буфера мы должны указать его новый размер (так как у нас вершин в два раза больше, то и его размер будет в два раза больше). И в-третьих, нам надо будет при отрисовке сцены нарисовать не один треугольник, а два.
Приступаем к практическому выполнению этих шагов.
Шаг первый - добавляем еще три вершины (а заодно поменяем и первый три, чтобы у нас получился действительно квадрат, а не непонятно что):
Размеры нашего квадрата будут 100 на 100, а пара противоположных вершин - (30, 30) и (130, 130) соответственно.
Шаг второй. В вызове функции CreateVertexBuffer в первом параметре ставим 6 (т. е. число вершин):
// Создаем вершиный буфер.if(FAILED(g_pd3dDevice->CreateVertexBuffer(
6*sizeof(CUSTOMVERTEX), // New value 6
0, D3DFVF_XYZRHW|D3DFVF_DIFFUSE,
D3DPOOL_DEFAULT, &g_pVB, NULL )))
{
...
И, наконец, шаг три. В отрисовке сцены (т. е. в вызове метода Render) вызывая метод DrawPrimitive пишем у него последним параметром 2 (новое число треугольников):
VOID Render()
{
...
// Начало отрисовки сцены.if(SUCCEEDED(g_pd3dDevice->BeginScene()))
{
// Отрисовка треугольника.
g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX));
g_pd3dDevice->SetFVF(D3DFVF_XYZRHW|D3DFVF_DIFFUSE);
// Ставим число треугольников (т. е. 2).
g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 2);
...
Компилируем и запускаем программу. На этот раз мы увидим квадрат.
PARKING.RU. Качественный ВИРТУАЛЬНЫЙ ХОСТИНГ на платформе Windows(r): поддержка NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый ВЫДЕЛЕННЫЙ ХОСТИНГ на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru