Direct3D для Visual C++ Урок 12. Использование буфера глубины 1
Сначала пора слов о том, что такое буфер глубины. Представьте себе, что у вас есть невыпуклый объект. Это означает, что у него могут быть несколько граней (треугольников), которые ориентированы одинаково (т. е. их верщины обходятся в одном направлении), но при этом они могут заслонять друг друга. Например, это может быть фигура человека, у которого одна нога заслоняет другую. Так вот, несмотря на то, что оде грани ориентированы одинаково, одна из них должна заслонять другую (возможно частично). Вообще-то
говоря так оно и будет безо всяких наших усилий, только, что прискорбно, не обязательно дальняя грань будет заслонена - может оказаться заслонена и передняя грань. Определяться это будет не удаленностью от нас некоторой грани, порядком их вывода в нашей сцене. Так вот, буфер глубины как раз и предназначен для того, чтобы заслоняласть именно дальняя грань.
Теперь приступаем к коду.
За основу возьмем код урока 8. Мы добавим к нашему треугольнику еще один, распложенный рядом с первым. Они будут вращаться, и всегда тот, который расположен ближе к нам, будет заслонять тот, который расположен дальше.
Вот такие изменения мы должны внести в наш код (это мы делаем аналогично уроку 9). Во-первых, мы должны создать два параллельных треугольника в методе InitVB:
Как видите, наши треугольники отличаются только z-координатами - они раздвинуты по оси z. Также обратите внимание, что мы несколькими строчками ниже указали 6 вершин.
Во-вторых, нам необходимо указать новое число треугольников в методе Render: