topology | 程序几何的拓扑。 |
bufferWithArgs | 包含绘制参数的缓冲区。 |
argsOffset | 缓冲区中包含绘制参数的字节偏移量。 |
在 GPU 中绘制程序几何。
DrawProceduralIndirectNow 在 GPU 上执行绘制调用,无任何顶点或索引缓冲区。如果着色器需要顶点缓冲区,将根据平台发生以下情况:- 如果声明了顶点缓冲区,但编译器可以对其优化,将发生正常的 DrawProcedural 调用。- 如果编译器无法不对顶点缓冲区声明进行优化,将把绘制调用转换成一个包含已注入的模拟顶点缓冲区的普通网格绘图调用。
后一种选择有性能损耗,因此建议使用 DrawProceduralIndirectNow 时不在着色器中声明顶点输入。
此函数仅在支持计算着色器的平台上运行。
通过ComputeBuffer读取要绘制的几何量。典型的用例是从ComputeShader生成任意量的数据,然后进行渲染,而无需读回 CPU。
此功能主要应用于着色器模型 4.5(Shader Model 4.5)级别硬件,其中着色器可以从ComputeBuffer缓冲区读取任意数据。
带有参数的缓冲区 bufferWithArgs
必须在给定的 argsOffset
偏移量处有四个整型数:每个实例的顶点计数、实例计数、起始顶点位置和起始实例位置。这会映射到 Direct3D11 DrawInstancedIndirect 和其他图形 API 上的等效函数。对于 4.2 之前的 OpenGL 版本和支持间接绘制的所有 OpenGL ES 版本,最后一个参数是保留的,因此必须为零。
请注意,此调用会立即执行,类似于 Graphics.DrawMeshNow。它使用当前设置的渲染目标、变换矩阵和着色器传递。
CommandBuffer 中也有类似的功能,请参阅 CommandBuffer.DrawProceduralIndirect。
其他资源:Graphics.DrawProceduralNow、ComputeBuffer.CopyCount、SystemInfo.supportsComputeShaders。
topology | 程序几何的拓扑。 |
indexBuffer | 将顶点提交给 GPU 时使用的索引缓冲区。 |
bufferWithArgs | 包含绘制参数的缓冲区。 |
argsOffset | 缓冲区中包含绘制参数的字节偏移量。 |
在 GPU 中绘制程序几何。
DrawProceduralIndirectNow 在 GPU 上执行绘制调用,而没有顶点缓冲区。如果着色器需要顶点缓冲区,将根据平台出现以下情况之一:- 如果声明了顶点缓冲区,但编译器可以对其进行优化,则会出现正常的 DrawProcedural 调用。- 如果编译器无法将顶点缓冲区声明进行优化,则绘制调用将转换为一个加入了模拟顶点缓冲区的普通网格绘制调用。
后一种选项会产生性能开销,因此建议在使用 DrawProceduralIndirectNow 时不要在着色器中声明顶点输入。要绘制的几何体量从 ComputeBuffer 读入。典型的用例是从 ComputeShader 生成任意数量的数据,然后进行渲染,而不需要读回 CPU。
此功能主要应用于着色器模型 4.5(Shader Model 4.5)级别硬件,其中着色器可以从ComputeBuffer缓冲区读取任意数据。
带有参数的缓冲区 bufferWithArgs
必须在给定的 argsOffset
偏移量处有五个整型数:每个实例的索引计数、实例计数、起始索引位置、基本顶点位置和起始实例位置。这会映射到 Direct3D11 DrawIndexedInstancedIndirect 和其他图形 API 上的等效函数。对于 4.2 之前的 OpenGL 版本和支持间接绘制的所有 OpenGL ES 版本,最后一个参数是保留的,因此必须为零。
请注意,此调用会立即执行,类似于 Graphics.DrawMeshNow。它使用当前设置的渲染目标、变换矩阵和着色器传递。
CommandBuffer 中也有类似的功能,请参阅 CommandBuffer.DrawProceduralIndirect。
其他资源:Graphics.DrawProceduralNow、ComputeBuffer.CopyCount、SystemInfo.supportsComputeShaders。