【问题标题】:Wireframe in SlimDX Direct3D11SlimDX Direct3D11 中的线框
【发布时间】:2012-09-23 11:53:28
【问题描述】:

我正在尝试使用 SlimDX 渲染线框 3D 模型。

谷歌搜索后,我只找到了高级主题,而不是如何在 SlimDX 中绘制线框。 他们说我必须使用着色器才能做到这一点。

由于我是 DirectX 的新手,我不太了解 HLSL。

我怎么画它?如果真的需要使用着色器,谁能给我一个例子或提示?

【问题讨论】:

  • 查找“光栅化器状态”作为关键字 - 它允许您选择填充模式(实体、线框、点),并且可以从着色器或代码中进行设置。你现在应该有更好的运气了:)

标签: c# 3d slimdx direct3d11


【解决方案1】:

由于您使用 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

您至少可以在其中找到一些基本的着色器示例。

【讨论】:

    【解决方案2】:

    这是我发现的,它对我有用:

    device.SetRenderState<FillMode>(RenderState.FillMode, FillMode.Wireframe);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多