我目前正在研究一个着色器,其中顶点的数量不是由三角形的数量定义的,我的着色器每 X 个单位放置一个立方体。
这意味着我无法事先知道它将创建多少个立方体,也不知道它将占用多少个顶点。
但是,您必须放置一个maxvertexcount[x]
. 我在里面放什么x
?
我该如何解决这个问题?
注意:我是几何着色器的初学者,对它们几乎一无所知。
我目前正在研究一个着色器,其中顶点的数量不是由三角形的数量定义的,我的着色器每 X 个单位放置一个立方体。
这意味着我无法事先知道它将创建多少个立方体,也不知道它将占用多少个顶点。
但是,您必须放置一个maxvertexcount[x]
. 我在里面放什么x
?
我该如何解决这个问题?
注意:我是几何着色器的初学者,对它们几乎一无所知。
您确实知道每次调用将需要多少个顶点(在input中“取”)。
这是由原始拓扑定义的;一个三角形(条带),例如需要 3,三角形邻接需要 6。 MaxVertexCount 绝对必须知道,因为每次调用可以输出的顶点数量存在实现限制。
如果您在一次调用中达到该限制,那么您将不得不强制 GPU 多次调用您的几何着色器(着色器模型 5.0 功能)。D3D 将此过程称为“几何着色器实例化”,并uint InstanceID : SV_GSInstanceID
用于识别正在执行的重复调用(实例)。
您对问题的描述实际上使这个问题难以明确回答,您能否包含一些 HLSL 代码来显示您实际尝试做的事情?