使用directx11中的顶点缓冲区绘制点画线

时间:2012-08-13 04:15:24

标签: graphics directx directx-9 directx-11

在OpenGL中,我们可以使用glEnable (GL_LINE_STIPPLE);glLineStipple(2,0x00FF);设置线条模式 在dx9中,我们可以使用ID3DXLine的方法SetPattern(0x00FF)绘制点画线。

但似乎在dx11中没有这样的方法来设置点画线的模式。如果确实如此,我想知道是否有一种聪明的方法可以在dx11中绘制点画线?

1 个答案:

答案 0 :(得分:1)

您可以查看this question。它询问如何在非弃用的现代OpenGL中进行线条点画,其功能与Direct3D 10 +类似。

My answer基本上是使用alpha测试和几何着色器的组合来做到这一点:

  

也许你也可以使用带有alpha(或红色)的1D纹理   通道将模式编码为0.0(无行)或1.0(行)然后   让线的纹理坐标从0到1并在片段中   着色器您进行简单的alpha测试,使用alpha丢弃片段   低于某个门槛。您可以方便几何着色器   生成你的线的texCoords,否则你需要不同的顶点   每一行。这样你也可以让texCoord依赖   线的屏幕空间长度。

     

如果你绘制三角形,那么整个事情会变得更加困难   多边形模式GL_LINE)。然后你必须做三角线   在几何着色器中转换自己,放入三角形   并列出行(这也可能是弃用的原因   未来的多边形模式,如果它还没有)。

虽然这个问题是关于OpenGL的,但基本原理完全相同,你只需要将答案中的着色器映射到HLSL,考虑到它们的简单性,这不应该太难。