如何知道哪个三角形对像素的颜色有贡献?

时间:2013-07-12 02:00:17

标签: graphics directx

我是全新的图形和DX,遇到了问题,我身边也没有人知道图形。对不起,如果这个问题看起来太天真了。

我使用DirectX 11渲染网格,我想为每个像素获取一个缓冲区。此缓冲区应存储为此像素提供颜色的所有三角形的链接列表(或其他一些结构)。

我应该操作哪个着色器或DX的哪个部分?或者简单地说,我在哪里可以获得像素着色器中的三角形信息?

2 个答案:

答案 0 :(得分:0)

您可以在像素着色器中编写三角形ID,但使用硬件z缓冲区,每个像素只能捕获一个三角形。

使用多重采样纹理,您可以捕获更多三角形。在实际情况下这应该足够了。

如果您的三角形非常小并且其中许多三角形在一个像素内可见,那么您应该考虑A-Buffer使用您自己的隐藏曲面去除算法。

答案 1 :(得分:0)

如果只是出于调试目的而需要,您可以使用任何图形调试器:

  1. Visual Studio图形调试器(自Visual Studio 2012以来集成)
  2. 对于AMD GPU:GPUPerfStudio
  3. 对于NVidia GPU:Nsight
  4. 来自DX SDK的好旧PIX。
  5. 如果你在运行时需要它(BTW,为什么?=))

    • 使用System-Generated ValuesVertexIDPrimitiveIDSV_VertexID来计算以像素颜色提供的精确基元甚至顶点。这很棘手,但可能。
    • 另一种方法是在顶点声明中使用某种自定义三角形ID。但要注意剔除。
    • 您可以将像素着色器中的最终数据输出到buffer,然后在CPU上读取它。
    • 所有这些问题都是DirectX中非常高级的主题。我不确定“全新的图形和DX”编码器是否可以解决它。