Этот урок посвящен использованию трехмерных примитивов. Они позволяют создавать трехмерные объекты за один раз. Т. е. вам не надо строить ваш объект из некоторого числа треугольников - вместо этого можно просто взять готовый примитив. Мы рассмотрим, как это надо делать, на примера чайника - самого экзотического из примитивов.
Итак, начинаем писать наш код. За основу возьмем код, начатый на уроке 6 и законченный на уроке 10. В этот код нам надо мнести некоторые изменения.
Во-первых, надо объявить переменную типа Mesh в нашем классе формы:
PublicClass Form1
...
Dim mesh As Mesh = Nothing
...
Для использования этого класса надо подключить сборку Microsoft.DirectX.Direct3DX, так что если она еще не подключена, то сделайте это (через узел References).
Второе, в методе OnResetDevice надо в эту переменную записать меш для чайника:
PublicSub OnResetDevice(ByVal sender As Object, _
ByVal e As EventArgs)
Dim dev As Device = CType(sender, Device)
mesh = Mesh.Teapot(dev)
...
Тут мы использовали статический метод Teapot класса Mesh, который и возвращает меш для чайника.
Третье, мы должны изменить метод Render. В нем можно убрать все лишнее (что относилось к рисованию треугольника) и добавить вызов метода DrawSubset класса Mesh (это самое главное изменение). После наших изменений этот метод может выглядеть так:
В общем-то, программа уже работает. Но, так как мы теперь исполльзуем стандартный меш, то можно вообще убрать весь лишний код, в котором мы создавали и использовали наш собственый меш. Т. е. мы можем просто удалить метод OnCreateVertexBuffer и все его вызовы (они у нас были только в методе OnCreateDevice).
Компилируем и запускаем программу. Получаем в итоге вращающийся чайник.
PARKING.RU. Качественный ВИРТУАЛЬНЫЙ ХОСТИНГ на платформе Windows(r): поддержка NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый ВЫДЕЛЕННЫЙ ХОСТИНГ на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru