版本:Unity 6 (6000.0)
语言英语
  • C#

Graphics.DrawProceduralIndirectNow

建议更改

成功!

感谢您帮助我们提升 Unity 文档的质量。虽然我们无法接受所有提交,但我们会阅读来自用户的所有建议,并视情况进行更新。

关闭

提交失败

由于某些原因,无法提交您建议的更改。请在几分钟后重试。还要感谢您抽出时间帮助我们提升 Unity 文档的质量。

关闭

取消

声明

public static void DrawProceduralIndirectNow(MeshTopology topology, ComputeBuffer bufferWithArgs, int argsOffset);

声明

public static void DrawProceduralIndirectNow(MeshTopology topology, GraphicsBuffer bufferWithArgs, int argsOffset);

参数

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.DrawProceduralNowComputeBuffer.CopyCountSystemInfo.supportsComputeShaders


声明

public static void DrawProceduralIndirectNow(MeshTopology topology, GraphicsBuffer indexBuffer, ComputeBuffer bufferWithArgs, int argsOffset);

声明

public static void DrawProceduralIndirectNow(MeshTopology topology, GraphicsBuffer indexBuffer, GraphicsBuffer bufferWithArgs, int argsOffset);

参数

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.DrawProceduralNowComputeBuffer.CopyCountSystemInfo.supportsComputeShaders