2011-01-19 3 views
2

Я создал простое приложение DirectX, которое отображает поле вершин. Вершины визуализируются как это (если смотреть сверху):DirectX: «просмотреть» полигоны

|\|\|\|\| 
|\|\|\|\| 

Каждый треугольник визуализируется как это:

1 
|\ 
2 3 

Что должно означать, что многоугольник против часовой стрелки, а не быть оказаны, но она есть. В любом случае, если смотреть сверху, это идеальный вариант.

Однако, если смотреть с другого уровня, некоторые полигоны являются прозрачными, и вы можете видеть геометрию за ними. Я выделил некоторые места, где это происходит.

Я думаю, что это некоторые из основных проблем начинающих. Что мне не хватает? Мое описание Растеризатор таково:

new RasterizerStateDescription 
           { 
            CullMode = CullMode.Front, 
            IsAntialiasedLineEnabled = true, 
            IsMultisampleEnabled = true, 
            IsDepthClipEnabled = true, 
            IsFrontCounterclockwise = false, 
            IsScissorEnabled = true, 
            DepthBias = 1, 
            DepthBiasClamp = 1000.0f, 
            FillMode = FillMode.Wireframe, 
            SlopeScaledDepthBias = 1.0f 
           }; 

alt text

ответ

0

Оказалось, что у меня просто не было буфера глубины-трафарета. Ну что ж.

3

Это дизайн. FillMode.Wireframe только рисует края каждого треугольника как линии. Это все.

Сделайте первый проход с режимом сплошной заливки и глубиной записи и цветной маской (RenderTargetWriteMask в терминологии D3D11), а также второй с тестом глубины (но с записью глубины) и каркасным режимом. Вероятно, вам понадобится смещение глубины, поскольку линии и треугольники не растеризуются одинаково (и их z может отличаться в равной позиции фрагмента).

BTW, эта техника известна как удаление скрытой линии. Вы можете проверить this presentation для получения более подробной информации.

+0

Это то же самое с FillMode.Solid. Я понял, что я просто пропустил буфер глубины трафарета. Но спасибо за информацию в любом случае. –

+0

Хорошо, похоже, что вы хотели иметь эффект удаления скрытой линии. Даже с буфером глубины-трафарета вы будете «видеть» полигоны. – Stringer

Смежные вопросы