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

CommandBuffer.DrawProceduralIndirect

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每个建议更改,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public void DrawProceduralIndirect(Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, ComputeBuffer bufferWithArgs, int argsOffset, MaterialPropertyBlock properties);

声明

public void DrawProceduralIndirect(Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, ComputeBuffer bufferWithArgs, int argsOffset);

声明

public void DrawProceduralIndirect(Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, ComputeBuffer bufferWithArgs);

声明

public void DrawProceduralIndirect(Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, GraphicsBuffer bufferWithArgs, int argsOffset, MaterialPropertyBlock properties);

声明

public void DrawProceduralIndirect(Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, GraphicsBuffer bufferWithArgs, int argsOffset);

声明

public void DrawProceduralIndirect(Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, GraphicsBuffer bufferWithArgs);

参数

matrix 要使用的变换矩阵。
material 要使用的材质。
shaderPass 要使用的着色器通道(或 -1 表示所有通道)。
topology 程序几何体的拓扑结构。
properties 在渲染之前应用的其他材质属性。请参阅 MaterialPropertyBlock
bufferWithArgs 包含绘制参数的缓冲区。
argsOffset 缓冲区中绘制参数所在的字节偏移量。

描述

添加“绘制程序几何体”命令。

当命令缓冲区执行时,这将在 GPU 上执行绘制调用,而无需任何顶点或索引缓冲区。要绘制的几何体数量从 ComputeBuffer 中读取。典型用例是从 ComputeShader 生成任意数量的数据,然后渲染这些数据,而无需回读到 CPU。

这仅在 Shader Model 4.5 级别的硬件上有用,在这些硬件上,着色器可以从 ComputeBuffer 缓冲区读取任意数据。

包含参数的缓冲区 bufferWithArgs 必须在给定的 argsOffset 偏移量处包含四个整数:每个实例的顶点数、实例数、起始顶点位置和起始实例位置。这对应于 Direct3D11 DrawInstancedIndirect 和其他图形 API 上的等效函数。在 4.2 之前的 OpenGL 版本和所有支持间接绘制的 OpenGL ES 版本中,最后一个参数是保留的,因此必须为零。

在顶点着色器中,通常使用 SV_VertexID 和 SV_InstanceID 输入变量从某些缓冲区获取数据。

其他资源:DrawProceduralMaterialPropertyBlockGraphics.DrawProceduralIndirectComputeBuffer.CopyCountSystemInfo.supportsComputeShaders


声明

public void DrawProceduralIndirect(GraphicsBuffer indexBuffer, Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, ComputeBuffer bufferWithArgs, int argsOffset, MaterialPropertyBlock properties);

声明

public void DrawProceduralIndirect(GraphicsBuffer indexBuffer, Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, ComputeBuffer bufferWithArgs, int argsOffset);

声明

public void DrawProceduralIndirect(GraphicsBuffer indexBuffer, Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, ComputeBuffer bufferWithArgs);

声明

public void DrawProceduralIndirect(GraphicsBuffer indexBuffer, Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, GraphicsBuffer bufferWithArgs, int argsOffset, MaterialPropertyBlock properties);

声明

public void DrawProceduralIndirect(GraphicsBuffer indexBuffer, Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, GraphicsBuffer bufferWithArgs, int argsOffset);

声明

public void DrawProceduralIndirect(GraphicsBuffer indexBuffer, Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, GraphicsBuffer bufferWithArgs);

参数

indexBuffer 用于将顶点提交到 GPU 的索引缓冲区。
matrix 要使用的变换矩阵。
material 要使用的材质。
shaderPass 要使用的着色器通道(或 -1 表示所有通道)。
topology 程序几何体的拓扑结构。
bufferWithArgs 包含绘制参数的缓冲区。
argsOffset 缓冲区中绘制参数所在的字节偏移量。
properties 在渲染之前应用的其他材质属性。请参阅 MaterialPropertyBlock

描述

添加“绘制程序几何体”命令。

当命令缓冲区执行时,这将在 GPU 上执行绘制调用,而无需顶点缓冲区。要绘制的几何体数量从 ComputeBuffer 中读取。典型用例是从 ComputeShader 生成任意数量的数据,然后渲染这些数据,而无需回读到 CPU。

这仅在 Shader Model 4.5 级别的硬件上有用,在这些硬件上,着色器可以从 ComputeBuffer 缓冲区读取任意数据。

包含参数的缓冲区 bufferWithArgs 必须在给定的 argsOffset 偏移量处包含五个整数:每个实例的索引数、实例数、起始索引位置、基顶点位置和起始实例位置。这对应于 Direct3D11 DrawIndexedInstancedIndirect 和其他图形 API 上的等效函数。在 4.2 之前的 OpenGL 版本和所有支持间接绘制的 OpenGL ES 版本中,最后一个参数是保留的,因此必须为零。

在顶点着色器中,通常使用 SV_VertexID 和 SV_InstanceID 输入变量从某些缓冲区获取数据。

其他资源:DrawProceduralMaterialPropertyBlockGraphics.DrawProceduralIndirectComputeBuffer.CopyCountSystemInfo.supportsComputeShaders