Каркас в SlimDX Direct3D11

Я пытаюсь визуализировать каркасную 3D-модель с помощью SlimDX.

После поиска в Google я нашел только продвинутые темы, а не о том, как рисовать каркас в SlimDX. Они говорят, что я должен использовать шейдер, чтобы сделать это.

Поскольку я новичок в DirectX, я не очень понимаю HLSL.

Как я могу это нарисовать? Если это действительно требует использования шейдера, может кто-нибудь дать мне пример или намеки?

2 ответа

Решение

Поскольку вы используете Direct3D 11, вам нужно будет использовать шейдеры для рисования чего-либо (исправлена ​​функция, удаленная из directx10).

Для каркаса вам действительно нужно установить состояние растеризатора, вот пример (я также убрал отсев там:

RasterizerStateDescription rsd = new RasterizerStateDescription()
{
    CullMode = CullMode.None,
    DepthBias = 0,
    DepthBiasClamp = 0.0f,
    FillMode = FillMode.Wireframe,
    IsAntialiasedLineEnabled = false,
    IsDepthClipEnabled = false,
    IsFrontCounterclockwise = false,
    IsMultisampleEnabled = false,
    IsScissorEnabled = false,
    SlopeScaledDepthBias = 0.0f             
};

Затем применить это состояние,

RasterizerState rs = RasterizerState.FromDescription(device, rsd);
device.ImmediateContext.Rasterizer.State = rs;

После того, как я признаю, что есть не так много учебников для SlimDX, для C++ есть

http://www.rastertek.com/tutdx11.html

По крайней мере, вы сможете найти некоторые базовые примеры шейдеров.

Вот что я нашел, и это работает для меня:

device.SetRenderState<FillMode>(RenderState.FillMode, FillMode.Wireframe);
Другие вопросы по тегам