# onClientPreRender (Client)

> Fired every frame, after the world is simulated and before the world is drawn.

- **Platform**: MY Multiplayer (MYMP)
- **Kind**: Lua Event
- **Side**: Client
- **Category**: Screen drawing
- **URL**: https://wiki.mymp.gg/en/onClientPreRender

## Syntax

```lua
addEventHandler("onClientPreRender", root, function(float timeSlice) ... end)
```

## Handler parameters

| Name | Type | Description |
| --- | --- | --- |
| `timeSlice` | `float` | Milliseconds since the previous `onClientPreRender`. 0 the first time. |

## Source

The root element (`root`).

What is drawn into render targets during this event is ready before the world, so a material showing that render target in the world already shows this frame's content.

## Example

```lua
local angle = 0

addEventHandler("onClientPreRender", root, function(timeSlice)
    angle = (angle + timeSlice * 0.09) % 360
end)

addEventHandler("onClientRender", root, function()
    dxDrawImage(20, 20, 64, 64, "images/spinner.png", angle)
end)
```

## See also

- [onClientRender (Client)](https://wiki.mymp.gg/en/onClientRender.md): Fired every frame, when that frame's dx drawing should be done.
- [onClientHUDRender (Client)](https://wiki.mymp.gg/en/onClientHUDRender.md): Fired every frame, right before onClientRender.
- [dxSetRenderTarget (Client)](https://wiki.mymp.gg/en/dxSetRenderTarget.md): Chooses where the next dx functions draw: into a render target or, without one, on the screen.
