DirectX: сквозные многоугольники - PullRequest
2 голосов
/ 19 января 2011

Я создал простое приложение 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

Ответы [ 2 ]

3 голосов
/ 19 января 2011

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

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

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

0 голосов
/ 18 марта 2011

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

...