Введение в программирование трехмерных игр с DX9

       

Сцена после отбрасывания обратных граней



Рисунок 2.12. Сцена после отбрасывания обратных граней

< Конечно, чтобы выполнить эту работу, Direct3D необходимо знать, какой полигон является фронтальным, а какой— обратным. По умолчанию Direct3D считает фронтальными гранями те треугольники, у которых порядок обхода вершин (в пространстве вида) задан по часовой стрелке. Треугольники, у которых порядок обхода вершин задан против часовой стрелки (опять же в пространстве вида) считаются обратными гранями.

ПРИМЕЧАНИЕ

Обратите внимание, что мы говорим «в пространстве вида». Это вызвано тем, что при повороте треугольника на 180 градусов порядок обхода вершин у него меняется на противоположный. Следовательно, треугольник у которого порядок обхода вершин в локальном пространстве был по часовой стрелке, может сменить порядок обхода вершин в пространстве вида, поскольку в процессе преобразований выполнялось вращение объектов.
Если по каким-то причинам вас не устраивает принятый по умолчанию вариант отбрасывания обратных граней, можно изменить его путем изменения режима визуализации D3DRS_CULLMODE.

Device->SetRenderState(D3DRS_CULLMODE, Value);

где Value может принимать одно из следующих значений:

D3DCULL_NONE — Удаление обратных граней выключено.

D3DCULL_CW — Отбрасываются треугольники с порядком обхода вершин по часовой стрелке.

D3DCULL_CCW — Отбрасываются треугольники с порядком обхода вершин против часовой стрелки. Это значение по умолчанию.


Содержание раздела