Direct3D для VB.NET Урок 21. Использование буфера глубины (z-буфера) 1
Для начала несколько слов о том, что такое вообще буфер глубины. Представьте себе, что у вас есть несколько объектов, одни из которых расположены дальше, а другие ближе. Очевидно, что те, которые расположены ближе, должны полностью или частично заслонять те, которые находятся дальше. Так вот именно этим и будет заниматься буфер глубины. Без него же тот объект, которые будет рисоваться последним, окажеться спереди в нашем окне, несмотря на то, что по координатам он будет расположен дальше.
За окнову возьмем урок 8. На этом уроке мы создали один треугольник и сейчас наша задача - превратить его в два треугольника - расположенных один за другим.
Начинаем менять код. Во-первых, авайте слегка развернем наш треугольник. Это мы делаем в методе SetupMatrices:
PrivateSub SetupMatrices()
' Установка мировой матрицы.
device.Transform.World = Matrix.RotationY(0.5)
...
Как вы видите, мы тут просто изменили параметр метода RotationY с нуля на 0.5.
Во-вторых, нам надо создать 2 треугольника. Для этого мы меняем метод OnCreateVertexBuffer, а именно добавляем в него еще один треугольник:
Обратите внимание, что наши треугольники растащены по оси z - у одного z-координата равна -0.5, у другого 0.5. Также обратите внимание, что у наших треугольников разный цвет (для наглядности).
И в-третьих, нам надо указать в методе Render, что у нас 2 треугольника: