在OpenGL中,我们可以使用glEnable (GL_LINE_STIPPLE);glLineStipple(2,0x00FF);
设置线条模式
在dx9中,我们可以使用ID3DXLine
的方法SetPattern(0x00FF)
绘制点画线。
但似乎在dx11中没有这样的方法来设置点画线的模式。如果确实如此,我想知道是否有一种聪明的方法可以在dx11中绘制点画线?
答案 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,考虑到它们的简单性,这不应该太难。