我正在尝试使用 SlimDX 渲染线框 3D 模型。
谷歌搜索后,我只找到了高级主题,而不是如何在 SlimDX 中绘制线框。他们说我必须使用着色器来做到这一点。
由于我是 DirectX 的新手,我不太了解 HLSL。
我怎么画它?如果真的需要使用着色器,谁能给我一个例子或提示?
我正在尝试使用 SlimDX 渲染线框 3D 模型。
谷歌搜索后,我只找到了高级主题,而不是如何在 SlimDX 中绘制线框。他们说我必须使用着色器来做到这一点。
由于我是 DirectX 的新手,我不太了解 HLSL。
我怎么画它?如果真的需要使用着色器,谁能给我一个例子或提示?
由于您使用 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);