我在图形和 DX 方面完全是新手,遇到了问题,我周围的人也不知道图形。对不起,如果这个问题看起来太天真了。
我使用 DirectX 11 渲染网格,我想为每个像素获取一个缓冲区。该缓冲区应存储为该像素提供颜色的所有三角形的链表(或其他结构)。
我应该对哪个着色器或 DX 的哪个部分进行操作?或者简单地说,我在哪里可以获得像素着色器中的三角形信息?
您可以在像素着色器中写入三角形 ID,但使用硬件 z 缓冲区您只能在每个像素中捕获一个三角形。
使用多重采样纹理,您可以捕获更多三角形。这在实际情况下应该足够了。
如果您的三角形非常小并且其中许多在一个像素内可见,那么您应该考虑使用您自己的隐藏表面去除算法的A-Buffer 。
如果仅出于调试目的需要它,则可以使用任何图形调试器:
如果您在运行时需要它(顺便说一句,为什么?=))
VertexID
,PrimitiveID
并SV_VertexID
计算对像素颜色有贡献的精确图元甚至顶点。这很棘手,但有可能。