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

Уроки по DirectX

  Все выпуски  

Уроки по DirectX


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

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

С. Гайдуков. OpenGL. Профессиональное программирование трехмерной графики на C++.
С. Гайдуков. OpenGL. Профессиональное программирование трехмерной графики на C++
Заказать на Озоне

Подробнее


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

Direct3D для VB.NET
Урок 11. CullMode или как показать только переднюю сторону

У каждой фигуры (как сложной, так и простой) часть треугольных граней видима, а часть - нет. Под тем, что грань невидима, мы имеем ввиду не то, что она заслонена другими, а то, что она повернута не той стороной. Т. е. те грани, которые повернуты не той стороной, мы видим как бы изнутри фигуры - как будто мы находимся внутри нашего объекта (фигуры человека, например).

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

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

Для то, чтобы определить, когда мы будем показывать треугольник, а когда нет, служит перечисление Cull. Оно может принимать следующие значения: Clockwise (по часовой стрелке), CounterClockwise (против часовой стрелки) и None (никакое).

Мы использовали это перечисление в методе OnResetDevice:

   Public Sub OnResetDevice(ByVal sender As Object, _
        ByVal e As EventArgs)
        Dim dev As Device = CType(sender, Device)
        ' Показываем два стороны треугольника.
        dev.RenderState.CullMode = Cull.None
        ' Отключаем световые эффекты.
        dev.RenderState.Lighting = False
    End Sub 'OnResetDevice

Тут оно у нас стояло как None, т. е. у нашего треугольника обе стороны были видимы. Если же поставить его в Clockwise или в CounterClockwise:

    ...
    dev.RenderState.CullMode = Cull.Clockwise ' или Cull.CounterClockwise.
    ...

то при вращении нашего треугольника мы будем видеть только одну сторону (т. е. иногда треугольник будет видимым, а иногда - нет).

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

В избранное