DirectX11可以细分三角形列表吗?

时间:2018-06-13 02:32:39

标签: 3d shader directx-11 hlsl

这个问题是在使用DirectX 11时。

我有一堆三角形列表形式的几何体。我可以只用顶点着色器和像素着色器渲染它们而没有问题。

如果我向管道添加一个外壳着色器,一个域着色器和一个几何着色器(编译着色器并将它们绑定到渲染上下文),三角形仍会渲染但是我不相信我的外壳着色器或域着色器正在调用或几何着色器。

所以我的问题是,如果基元类型是三角形列表,是否会调用外壳着色器,域着色器和几何着色器?我只使用控制点补丁列表找到了细分的示例。镶嵌是否适用于三角形列表?

1 个答案:

答案 0 :(得分:1)

当基本类型为D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST时,不会调用外壳着色器,域着色器和几何着色器。 (只是顶点着色器和像素着色器。)根据this answer,您必须使用补丁基元。

  

启用细分后,输入到汇编程序阶段的数据必须是补丁数据。

对于三角形列表,您可以将原语切换到D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST并且它可以正常工作。 (假设你已经绑定了你的船体,域和几何着色器。)(对于三角形条带似乎没有一个简单的解决方案。)