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



Создание фигур - часть 19


vNew.y += dh;

// Добавить новую вершину NewVert[nVert] = vNew;

// Создать данные граней int *pfd = NewFaceData;

for (i = 0; i « nVert; i++) (

*pfd++ = 3;

*pfd++ = i;

*pfd++ = (i+1) % nVert;

*pfd++ = nVert; // Новая вершина

} *pfd = 0;

// Включить новые грани в фигуру pNew3hape-»AddFaces (NewVert, nVert+1, NULL, 0, NewFaceData) ;

// Удалить списки вершин и граней delete [] NewVert;

delete [] NewFaceData;

// Удалить данные вершин delete [] pVert;

// Освободить грань pIFace-»Release () ;

}

// Освободить массив граней pIFA-»Release () ;

pMB-»GenerateNormals () ;

// Примечание: не освобождайте интерфейс // построения сеток!!!

// Удалить старую фигуру и сделать текущей новую. delete m_pShape;

m_pShape = pNewShape;

}

// Присоединить итоговую фигуру к макету m pScene-»AddChild(m pShape) ;

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

/b> 1W Глава 4. Создание фигур

подробно объяснять весь приведенный фрагмент, а предлагаю читателю разобраться с ним самостоятельно. Здесь присутствуют несколько функций класса C3dShape и прямые обращения к интерфейсам механизма визуализации в тех случаях, когда соответствующий сервис не вошел в класс C3dShape.

Создание леса

Давайте попробуем изобразить на экране сценку из жизни леса: в ветвях весело щебечут птички, журчит ручеек, где-то ухает филин. Неплохая мысль — но для начала придется нарисовать что-нибудь, хотя бы отдаленно напоминающее дерево. На Рисунок 4-25 изображена елка (команда Edit ¦АТгее).

Рисунок. 4-25. Елка


Конечно, елки бывают и покрасивее, но пока сойдет и такая. Наше дерево состоит из 25 вершин и 19 граней. Если мы хотим создать целый лес из 100 деревьев (из остальных елок сделали бумагу для книги, которую вы читаете), можно включить в макет еще 99 деревьев, похожих на Рисунок 4-25. Самое время подумать о том, как приказать механизму визуализации нарисовать еще 99 деревьев, в точности аналогичных первому, но расположенных в других местах макета.




Содержание  Назад  Вперед