Каркас в 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);