# RenderCommand in maplibre::render::render_phase - Rust
`RenderCommand` is a trait that runs an ECS query and produces one or more `TrackedRenderPass` calls. Types implementing this trait can be composed (as tuples).

# Trait maplibre::render::render_phase::RenderCommand

source ·

    pub trait RenderCommand<P: PhaseItem> {
        // Required method
        fn render<'w>(
            world: &'w World,
            item: &P,
            pass: &mut TrackedRenderPass<'w>
        ) -> RenderCommandResult;
    }

Expand description

`RenderCommand` is a trait that runs an ECS query and produces one or more `TrackedRenderPass` calls. Types implementing this trait can be composed (as tuples).

They can be registered as a `Draw` function via the [`AddRenderCommand::add_render_command`] method.

## Example

The `DrawPbr` draw function is created from the following render command tuple. Const generics are used to set specific bind group locations:

ⓘ

    pub type DrawPbr = (
        SetItemPipeline,
        SetMeshViewBindGroup<0>,
        SetStandardMaterialBindGroup<1>,
        SetTransformBindGroup<2>,
        DrawMesh,
    );

## Required Methods§

source

#### fn render<'w>( world: &'w World, item: &P, pass: &mut TrackedRenderPass<'w> ) -> RenderCommandResult

Renders the `PhaseItem` by issuing draw calls via the `TrackedRenderPass`.

## Object Safety§

This trait is not object safe.

## Implementations on Foreign Types§

source §

### impl<P: PhaseItem, C0: RenderCommand<P>> RenderCommand<P> for (C0,)

source §

#### fn render<'w>( world: &'w World, item: &P, pass: &mut TrackedRenderPass<'w> ) -> RenderCommandResult

source §

### impl<P: PhaseItem, C0: RenderCommand<P>, C1: RenderCommand<P>> RenderCommand<P> for (C0, C1)

source §

#### fn render<'w>( world: &'w World, item: &P, pass: &mut TrackedRenderPass<'w> ) -> RenderCommandResult

source §

### impl<P: PhaseItem, C0: RenderCommand<P>, C1: RenderCommand<P>, C2: RenderCommand<P>> RenderCommand<P> for (C0, C1, C2)

source §

#### fn render<'w>( world: &'w World, item: &P, pass: &mut TrackedRenderPass<'w> ) -> RenderCommandResult

source §

### impl<P: PhaseItem, C0: RenderCommand<P>, C1: RenderCommand<P>, C2: RenderCommand<P>, C3: RenderCommand<P>> RenderCommand<P> for (C0, C1, C2, C3)

source §

#### fn render<'w>( world: &'w World, item: &P, pass: &mut TrackedRenderPass<'w> ) -> RenderCommandResult

source §

### impl<P: PhaseItem, C0: RenderCommand<P>, C1: RenderCommand<P>, C2: RenderCommand<P>, C3: RenderCommand<P>, C4: RenderCommand<P>> RenderCommand<P> for (C0, C1, C2, C3, C4)

source §

#### fn render<'w>( world: &'w World, item: &P, pass: &mut TrackedRenderPass<'w> ) -> RenderCommandResult

## Implementors§

source §

### impl RenderCommand<TileDebugItem> for DrawDebugOutline

source §

### impl RenderCommand<LayerItem> for DrawRasterTile

source §

### impl RenderCommand<LayerItem> for DrawVectorTile

source §

### impl RenderCommand<TileMaskItem> for DrawMask

source §

### impl<P: PhaseItem> RenderCommand<P> for SetDebugPipeline

source §

### impl<P: PhaseItem> RenderCommand<P> for SetRasterTilePipeline

source §

### impl<P: PhaseItem> RenderCommand<P> for SetVectorTilePipeline

source §

### impl<P: PhaseItem> RenderCommand<P> for SetMaskPipeline

source §

### impl<const I: usize> RenderCommand<LayerItem> for SetRasterViewBindGroup<I>