Direct3D для VB.NET Урок 11. CullMode или как показать только переднюю сторону
У каждой фигуры (как сложной, так и простой) часть треугольных граней видима, а часть - нет. Под тем, что грань невидима, мы имеем ввиду не то, что она заслонена другими, а то, что она повернута не той стороной. Т. е. те грани, которые повернуты не той стороной, мы видим как бы изнутри фигуры - как будто мы находимся внутри нашего объекта (фигуры человека, например).
Идея состоит в том, что такие грани вообще не надо отрисовывать - т. е. если треугольник (а именно на них и разбивается любая фигура) повернут к нам "лицевой" строной, то мы его показываем, а если "изнаночной", то мы его не показываем и он становится невидимым.
С формальной точки зрания это делается так: мы обходим вершины треугольника по порядку, и если обход получается по часовой стрелке, то грань считается видимой, а если против - то невидимой (или прямо наоборот - такое тоже возможно).
Для то, чтобы определить, когда мы будем показывать треугольник, а когда нет, служит перечисление Cull. Оно может принимать следующие значения: Clockwise (по часовой стрелке), CounterClockwise (против часовой стрелки) и None (никакое).
Мы использовали это перечисление в методе OnResetDevice:
PublicSub OnResetDevice(ByVal sender As Object, _
ByVal e As EventArgs)
Dim dev As Device = CType(sender, Device)
' Показываем два стороны треугольника.
dev.RenderState.CullMode = Cull.None
' Отключаем световые эффекты.
dev.RenderState.Lighting = FalseEndSub'OnResetDevice
Тут оно у нас стояло как None, т. е. у нашего треугольника обе стороны были видимы. Если же поставить его в Clockwise или в CounterClockwise:
...
dev.RenderState.CullMode = Cull.Clockwise ' или Cull.CounterClockwise.
...
то при вращении нашего треугольника мы будем видеть только одну сторону (т. е. иногда треугольник будет видимым, а иногда - нет).
PARKING.RU. Качественный ВИРТУАЛЬНЫЙ ХОСТИНГ на платформе Windows(r): поддержка NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый ВЫДЕЛЕННЫЙ ХОСТИНГ на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru