Отправляет email-рассылки с помощью сервиса Sendsay

Уроки по DirectX

  Все выпуски  

Уроки по DirectX


Информационный Канал Subscribe.Ru

Direct3D для Visual Basic.NET. Рассылки сайта progs.biz
Рассылка № 23
 
Начало > DirectX > Direct3D > VB.NET > Урок 19

Джим Адамс. DirectX: продвинутая анимация.
Джим Адамс. DirectX: продвинутая анимация
Заказать на Озоне

Подробнее


Полные версии уроков (с картинками): урок 19.

Direct3D для VB.NET
Урок 19. Рисуем чайник

Этот урок посвящен использованию трехмерных примитивов. Они позволяют создавать трехмерные объекты за один раз. Т. е. вам не надо строить ваш объект из некоторого числа треугольников - вместо этого можно просто взять готовый примитив. Мы рассмотрим, как это надо делать, на примера чайника - самого экзотического из примитивов.

Итак, начинаем писать наш код. За основу возьмем код, начатый на уроке 6 и законченный на уроке 10. В этот код нам надо мнести некоторые изменения.

Во-первых, надо объявить переменную типа Mesh в нашем классе формы:

Public Class Form1
    ...
    Dim mesh As Mesh = Nothing
    ...

Для использования этого класса надо подключить сборку Microsoft.DirectX.Direct3DX, так что если она еще не подключена, то сделайте это (через узел References).

Второе, в методе OnResetDevice надо в эту переменную записать меш для чайника:

    Public Sub 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 (это самое главное изменение). После наших изменений этот метод может выглядеть так:

Private Sub Render()
    If device Is Nothing Then
        Return
    End If
    device.Clear(ClearFlags.Target, System.Drawing.Color.Blue, 1.0F, 0)
    device.BeginScene()
    SetupMatrices()

    ' Вывод меша.
    mesh.DrawSubset(0)

    device.EndScene()
    device.Present()
End Sub

В общем-то, программа уже работает. Но, так как мы теперь исполльзуем стандартный меш, то можно вообще убрать весь лишний код, в котором мы создавали и использовали наш собственый меш. Т. е. мы можем просто удалить метод OnCreateVertexBuffer и все его вызовы (они у нас были только в методе OnCreateDevice).

Компилируем и запускаем программу. Получаем в итоге вращающийся чайник.

Рассылки сайта progs.biz
Visual C++, MFC
C# и .NET
VB.NET
ASP.NET new!
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz


PARKING.RU. Качественный ВИРТУАЛЬНЫЙ ХОСТИНГ на платформе Windows(r): поддержка NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый ВЫДЕЛЕННЫЙ ХОСТИНГ на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru


Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2005 сайт progs.biz
© 2002-2005 Алексеев Игорь

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.directxlessons
Отписаться

В избранное