Каркас в SlimDX Direct3D11

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

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

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

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


person user1418759    schedule 23.09.2012    source источник
comment
Найдите состояние растеризатора в качестве ключевых слов — оно позволяет вам выбрать режим заполнения (сплошной, каркасный, точечный) и может быть установлено либо из шейдера, либо из кода. Теперь вам должно повезти больше :)   -  person Thomas    schedule 23.09.2012


Ответы (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

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

person mrvux    schedule 28.09.2012

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

device.SetRenderState<FillMode>(RenderState.FillMode, FillMode.Wireframe);
person zionpi    schedule 09.04.2014