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

robot_2Generated
code_blocksInput

Description

The DrawModelInstanced method is used to render multiple instances of a 3D model efficiently. This method is part of the CommandList class within the Sandbox.Rendering namespace. It allows you to draw a model multiple times with different transformations, which is useful for rendering large numbers of similar objects, such as trees in a forest or soldiers in an army.

Usage

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

  • model: An instance of Sandbox.Model representing the 3D model you want to render.
  • transforms: A System.Span<Transform> containing the transformation matrices for each instance of the model. This allows each instance to be positioned, rotated, and scaled differently.
  • attributes: An instance of Sandbox.RenderAttributes that specifies additional rendering attributes, such as material properties or shader parameters.

Ensure that the CommandList is properly initialized and that the rendering context is set up before calling this method.

Example

// Example usage of DrawModelInstanced
var commandList = new CommandList();
var model = new Model("path/to/model");
var transforms = new Span<Transform>(new Transform[]
{
    new Transform(Vector3.Zero, Rotation.Identity, 1.0f),
    new Transform(new Vector3(10, 0, 0), Rotation.FromAxis(Vector3.Up, 45), 1.0f),
    new Transform(new Vector3(20, 0, 0), Rotation.FromAxis(Vector3.Up, 90), 1.0f)
});
var attributes = new RenderAttributes();

commandList.DrawModelInstanced(model, transforms, attributes);