【问题标题】:draw stipple line using vertex buffer in directx11在directx11中使用顶点缓冲区绘制点画线
【发布时间】:2012-08-13 04:15:23
【问题描述】:

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

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

【问题讨论】:

    标签: graphics directx directx-9 directx-11


    【解决方案1】:

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

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

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

    如果你画三角形(使用 多边形模式 GL_LINE)。然后你必须做三角线 在几何着色器中变换自己,放入三角形 并放出线条(这也可能是弃用的原因 未来的多边形模式,如果还没有的话)。

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

    【讨论】:

      猜你喜欢
      • 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
      相关资源
      最近更新 更多