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

Уроки по DirectX

  Все выпуски  

Уроки по DirectX


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

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

Бьерн Страуструп. Язык программирования С++. Специальное издание.
Бьерн Страуструп. Язык программирования С++. Специальное издание
Заказать на Озоне

Подробнее


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

Direct3D для VB.NET
Урок 6. Меняем формат вершин

На уроке 4 мы нарисовали треугольник. На настоящем и нескольких последующих уроках мы будем делать почти тоже самое - единственное отличие в том, что в уроке 4 мы использовали однородные координаты, а тут мы будем использовать обычные (разницу между теми и дугими мы расссмотрим позже, на одном из последующих уроков).

Итак, начинаем изменять наш код из урока 4.

Во-первых, нам надо поменять везде TransformedColored на PositionColored. Это разные формы представления вершин. Это надо сделать в нескольких местах. Во-первых, в методе OnCreateVertexBuffer:

    ' Создание вершинного буфера.
    Public Sub OnCreateVertexBuffer(ByVal sender As Object, _
    ByVal e As EventArgs)
        Dim vb As VertexBuffer = CType(sender, VertexBuffer)
        Dim verts As CustomVertex.PositionColored() = _
            CType(vb.Lock(0, 0), CustomVertex.PositionColored())
        'Задаем координаты и цвета вершин.
        verts(0).X = -1.0F
        verts(0).Y = -1.0F
        verts(0).Z = 0.0F
        verts(0).Color = System.Drawing.Color.Aqua.ToArgb()
        verts(1).X = 1.0F
        verts(1).Y = -1.0F
        verts(1).Z = 0.0F
        verts(1).Color = System.Drawing.Color.Brown.ToArgb()
        verts(2).X = 0.0F
        verts(2).Y = 1.0F
        verts(2).Z = 0.0F
        verts(2).Color = System.Drawing.Color.LightPink.ToArgb()
        vb.Unlock()
    End Sub

Обратите внимание, что по сравнении с уроком 4 мы тут при заполнении вершин данными убрали строки вида

        ...
        verts(...).Rhw = 1
        ...

Это мы сделали потому, что у нас теперь другой формат вершин и никакого Rhw там просто нет. Также обратите внимание на то, что теперь координаты вершин не такие большие - они уже не в пискелах.

Во-вторых, в методе OnCreateDevice:

    Public Sub OnCreateDevice
(ByVal sender As Object, ByVal e As EventArgs)
        ...
        vertexBuffer = _
        New VertexBuffer(GetType(CustomVertex.PositionColored), _
        3, dev, 0, CustomVertex.PositionColored.Format, _
        Pool.Default)
        ...
    End Sub

И, наконец, в-третьих, в методе Render:

    Private Sub Render()
        ...
        'Тут будем добавлять код.
        device.SetStreamSource(0, vertexBuffer, 0)
        device.VertexFormat = CustomVertex.PositionColored.Format
        device.DrawPrimitives(PrimitiveType.TriangleList, 0, 1)
        'Заканчиваем сцену.
        ...
    End Sub

С этим уроком все. На следующем уроке мы добавим метод OnResetDevice и SetupMatrices.

Рассылки сайта 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
Отписаться

В избранное