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

Уроки по DirectX

  Все выпуски  

Уроки по DirectX


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

Direct3D для Visual C++. Рассылки сайта progs.biz
Рассылка № 9
 
Начало > DirectX > Direct3D > VB.NET > Урок 5

М. Макдональд. Рецепты программирования на Visual Basic.NET.
М. Макдональд. Рецепты программирования на Visual Basic.NET.
Заказать на Озоне

Подробнее


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

Direct3D для VB.NET
Урок 5. Рисуем квадрат

Как мы уже рассуждали на прошлом уроке для показа любой фигуры она разбивается на треугольники. И этот же принцип действует и для квадрата - для его показа мы разобьем его на два треуголькника.

Начинаем писать код.

Для начала перепишем метод OnCreateVertexBuffer, в котором создается вершинный буфер (напомним, что вершинный буфер - это в первом приближении совокупность всех вершин нашей фигуры). На этот раз у нас будет два треугольника (мы просто делим наш квадрат по диагонали) и, соответстенно, 6 вершин:

    ' Создание вершинного буфера.
    Public Sub OnCreateVertexBuffer
        (ByVal sender As Object, ByVal e As EventArgs)
        Dim vb As VertexBuffer = CType(sender, VertexBuffer)
        Dim verts As CustomVertex.TransformedColored() = _
            CType(vb.Lock(0, 0), CustomVertex.TransformedColored())
        'Задаем координаты и цвета вершин.
        ' Первый треугольник.
        verts(0).X = 50
        verts(0).Y = 50
        verts(0).Z = 0.5F
        verts(0).Rhw = 1
        verts(0).Color = System.Drawing.Color.Red.ToArgb()
        verts(1).X = 250
        verts(1).Y = 50
        verts(1).Z = 0.5F
        verts(1).Rhw = 1
        verts(1).Color = System.Drawing.Color.Red.ToArgb()
        verts(2).X = 50
        verts(2).Y = 250
        verts(2).Z = 0.5F
        verts(2).Rhw = 1
        verts(2).Color = System.Drawing.Color.Red.ToArgb()
        ' Второй треугольник.
        verts(3).X = 50
        verts(3).Y = 250
        verts(3).Z = 0.5F
        verts(3).Rhw = 1
        verts(3).Color = System.Drawing.Color.RosyBrown.ToArgb()
        verts(4).X = 250
        verts(4).Y = 50
        verts(4).Z = 0.5F
        verts(4).Rhw = 1
        verts(4).Color = System.Drawing.Color.RosyBrown.ToArgb()
        verts(5).X = 250
        verts(5).Y = 250
        verts(5).Z = 0.5F
        verts(5).Rhw = 1
        verts(5).Color = System.Drawing.Color.RosyBrown.ToArgb()
        vb.Unlock()
    End Sub

Диагональ нашего квадрата будет идти из точки (50, 50) до точки (250, 250).

Теперь нам надо поменять параметр для вызываемого конструктора класса VertexBuffer в методе OnCreateDevice. А именно в нем надо указать новое количество вершин - 6 вместо 3:

    Public Sub OnCreateDevice(ByVal sender As Object, ByVal e As EventArgs)
        Dim dev As Device = CType(sender, Device)
        'Создаем вершинный буфер из 6 вершин.
        vertexBuffer = New VertexBuffer
            (GetType(CustomVertex.TransformedColored), _
            6, dev, 0, CustomVertex.TransformedColored.Format, Pool.Default)
        ...

И, наконец, шаг последний - мы должны в методе, который непосредственно занимается рисованием - т. е. в методе Render указать, что мы рисуем два треугольнига:

    Private Sub Render()
        ...
        device.DrawPrimitives(PrimitiveType.TriangleList, 0, 2)
        'Заканчиваем сцену.
        device.EndScene()

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

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


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


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

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

В избранное