static void DrawModelInstanced( Model model, System.Span<Transform> transforms, RenderAttributes attributes )
static void DrawModelInstanced( Model model, int count, RenderAttributes attributes )

robot_2Generated
code_blocksInput

Description

The DrawModelInstanced method in the Sandbox.Graphics class is used to render multiple instances of a 3D model efficiently. This method leverages instancing, a technique that allows the GPU to draw multiple instances of a model with different transformations in a single draw call, significantly improving performance when rendering many identical objects.

Usage

To use the DrawModelInstanced method, you need to provide the following parameters:

  • model: The Sandbox.Model object representing the 3D model you want to render.
  • transforms: A System.Span<Transform> containing the transformation matrices for each instance of the model. Each Transform defines the position, rotation, and scale of an instance.
  • attributes: A Sandbox.RenderAttributes object that specifies rendering attributes such as material properties and shader parameters.

Ensure that the transforms span contains the correct number of transformations corresponding to the number of instances you wish to render.

Example

// Example usage of DrawModelInstanced

// Assume 'model' is a pre-loaded Sandbox.Model
// 'transforms' is a Span<Transform> with transformation data for each instance
// 'attributes' is a RenderAttributes object with necessary rendering settings

Span<Transform> transforms = stackalloc Transform[100];
for (int i = 0; i < transforms.Length; i++)
{
    transforms[i] = new Transform
    {
        Position = new Vector3(i * 2.0f, 0, 0),
        Rotation = Quaternion.Identity,
        Scale = Vector3.One
    };
}

RenderAttributes attributes = new RenderAttributes();

// Draw 100 instances of the model
Graphics.DrawModelInstanced(model, transforms, attributes);