Header menu logo Mibo.Raylib

Draw Module

Pipe-friendly drawing DSL. Each function takes a RenderBuffer2D as its last argument, adds the corresponding command, and returns the buffer for chaining.

Commands are built via Command2D and added to the buffer. Partial application of styling parameters (layer, color, thickness) is supported — bind them once and reuse across multiple draw calls.

Usage:

 buffer
 |> Draw.beginCamera 0<RenderLayer> worldCamera
 |> Draw.fillRect (10<RenderLayer>, Color.Red) groundRect
 |> Draw.fillCircle (10<RenderLayer>, Color.Blue) (center, radius)
 |> Draw.line (5<RenderLayer>, Color.Green) (p1, p2)
 |> Draw.endCamera 1000<RenderLayer>
 |> Draw.drop

Functions and values

Function or value Description

beginCamera layer camera buffer

Full Usage: beginCamera layer camera buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Begins a 2D camera transform. (layer) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
camera : Camera2D
buffer : RenderBuffer2D
Returns: RenderBuffer2D

beginCameraWith layer config buffer

Full Usage: beginCameraWith layer config buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Begins a 2D camera with explicit rendering config (viewport, clear). (layer) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
config : Camera2DConfig
buffer : RenderBuffer2D
Returns: RenderBuffer2D

beginShader layer shader buffer

Full Usage: beginShader layer shader buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Begins a shader mode. (layer) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
shader : Shader
buffer : RenderBuffer2D
Returns: RenderBuffer2D

beginTarget layer target buffer

Full Usage: beginTarget layer target buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Begins rendering to a render texture. (layer) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
target : RenderTexture2D
buffer : RenderBuffer2D
Returns: RenderBuffer2D

bezier (layer, color, thickness) (start, control, finish) buffer

Full Usage: bezier (layer, color, thickness) (start, control, finish) buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Quadratic bezier curve. (layer, color, thickness) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
thickness : float32
start : Vector2
control : Vector2
finish : Vector2
buffer : RenderBuffer2D
Returns: RenderBuffer2D

circleGradient layer (centerX, centerY, radius, inner, outer) buffer

Full Usage: circleGradient layer (centerX, centerY, radius, inner, outer) buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Gradient circle. (layer) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
centerX : int
centerY : int
radius : float32
inner : Color
outer : Color
buffer : RenderBuffer2D
Returns: RenderBuffer2D

circleOutline (layer, color) (center, radius) buffer

Full Usage: circleOutline (layer, color) (center, radius) buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Circle outline. (layer, color) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
center : Vector2
radius : float32
buffer : RenderBuffer2D
Returns: RenderBuffer2D

circleSector (layer, color) (center, radius, startAngle, endAngle, segments) buffer

Full Usage: circleSector (layer, color) (center, radius, startAngle, endAngle, segments) buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Filled circle sector (pie slice). (layer, color) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
center : Vector2
radius : float32
startAngle : float32
endAngle : float32
segments : int
buffer : RenderBuffer2D
Returns: RenderBuffer2D

circleSectorOutline (layer, color) (center, radius, startAngle, endAngle, segments) buffer

Full Usage: circleSectorOutline (layer, color) (center, radius, startAngle, endAngle, segments) buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Circle sector outline. (layer, color) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
center : Vector2
radius : float32
startAngle : float32
endAngle : float32
segments : int
buffer : RenderBuffer2D
Returns: RenderBuffer2D

clear layer color buffer

Full Usage: clear layer color buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Clears the current framebuffer to the given color.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
buffer : RenderBuffer2D
Returns: RenderBuffer2D

clearScissor layer buffer

Full Usage: clearScissor layer buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Disables scissor testing.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
buffer : RenderBuffer2D
Returns: RenderBuffer2D

disableShadows layer lightCtx buffer

Full Usage: disableShadows layer lightCtx buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Disables shadow casting for the given light context. (layer) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
lightCtx : LightContext2D
buffer : RenderBuffer2D
Returns: RenderBuffer2D

drawImmediate layer action buffer

Full Usage: drawImmediate layer action buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Flushes raylib's batch, exits camera/shader, runs action, restores state. (layer) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
action : unit -> unit
buffer : RenderBuffer2D
Returns: RenderBuffer2D

drop _buffer

Full Usage: drop _buffer

Parameters:
Modifiers: inline

Terminal function that discards the buffer, silencing the unused-value warning. Does nothing.

_buffer : RenderBuffer2D

ellipseOutline (layer, color) (centerX, centerY, radiusH, radiusV) buffer

Full Usage: ellipseOutline (layer, color) (centerX, centerY, radiusH, radiusV) buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Ellipse outline. (layer, color) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
centerX : int
centerY : int
radiusH : float32
radiusV : float32
buffer : RenderBuffer2D
Returns: RenderBuffer2D

enableShadows layer lightCtx buffer

Full Usage: enableShadows layer lightCtx buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Enables shadow casting for the given light context. (layer) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
lightCtx : LightContext2D
buffer : RenderBuffer2D
Returns: RenderBuffer2D

endCamera layer buffer

Full Usage: endCamera layer buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Ends the current 2D camera transform.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
buffer : RenderBuffer2D
Returns: RenderBuffer2D

endShader layer buffer

Full Usage: endShader layer buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Ends the current shader mode.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
buffer : RenderBuffer2D
Returns: RenderBuffer2D

endTarget layer buffer

Full Usage: endTarget layer buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Ends rendering to a render texture.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
buffer : RenderBuffer2D
Returns: RenderBuffer2D

fillCircle (layer, color) (center, radius) buffer

Full Usage: fillCircle (layer, color) (center, radius) buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Filled circle. (layer, color) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
center : Vector2
radius : float32
buffer : RenderBuffer2D
Returns: RenderBuffer2D

fillEllipse (layer, color) (centerX, centerY, radiusH, radiusV) buffer

Full Usage: fillEllipse (layer, color) (centerX, centerY, radiusH, radiusV) buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Filled ellipse. (layer, color) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
centerX : int
centerY : int
radiusH : float32
radiusV : float32
buffer : RenderBuffer2D
Returns: RenderBuffer2D

fillPoly (layer, color) (center, sides, radius, rotation) buffer

Full Usage: fillPoly (layer, color) (center, sides, radius, rotation) buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Filled regular polygon. (layer, color) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
center : Vector2
sides : int
radius : float32
rotation : float32
buffer : RenderBuffer2D
Returns: RenderBuffer2D

fillRect (layer, color) rect buffer

Full Usage: fillRect (layer, color) rect buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Filled rectangle. (layer, color) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
rect : Rectangle
buffer : RenderBuffer2D
Returns: RenderBuffer2D

fillRectRounded (layer, color, roundness, segments) rect buffer

Full Usage: fillRectRounded (layer, color, roundness, segments) rect buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Filled rounded rectangle. (layer, color, roundness, segments) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
roundness : float32
segments : int
rect : Rectangle
buffer : RenderBuffer2D
Returns: RenderBuffer2D

fillRing (layer, color) (center, innerR, outerR, startAngle, endAngle, segments) buffer

Full Usage: fillRing (layer, color) (center, innerR, outerR, startAngle, endAngle, segments) buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Filled ring / arc. (layer, color) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
center : Vector2
innerR : float32
outerR : float32
startAngle : float32
endAngle : float32
segments : int
buffer : RenderBuffer2D
Returns: RenderBuffer2D

line (layer, color) (start, finish) buffer

Full Usage: line (layer, color) (start, finish) buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

1-pixel line. (layer, color) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
start : Vector2
finish : Vector2
buffer : RenderBuffer2D
Returns: RenderBuffer2D

lineStrip (layer, color) points buffer

Full Usage: lineStrip (layer, color) points buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Connected line segments. (layer, color) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
points : Vector2[]
buffer : RenderBuffer2D
Returns: RenderBuffer2D

lineThick (layer, color, thickness) (start, finish) buffer

Full Usage: lineThick (layer, color, thickness) (start, finish) buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Line with custom thickness. (layer, color, thickness) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
thickness : float32
start : Vector2
finish : Vector2
buffer : RenderBuffer2D
Returns: RenderBuffer2D

polyOutline (layer, color, thickness) (center, sides, radius, rotation) buffer

Full Usage: polyOutline (layer, color, thickness) (center, sides, radius, rotation) buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Regular polygon outline with thickness. (layer, color, thickness) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
thickness : float32
center : Vector2
sides : int
radius : float32
rotation : float32
buffer : RenderBuffer2D
Returns: RenderBuffer2D

rectGradient layer (rect, tl, bl, tr, br) buffer

Full Usage: rectGradient layer (rect, tl, bl, tr, br) buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

4-corner gradient rectangle. (layer) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
rect : Rectangle
tl : Color
bl : Color
tr : Color
br : Color
buffer : RenderBuffer2D
Returns: RenderBuffer2D

rectGradientH layer (x, y, w, h, left, right) buffer

Full Usage: rectGradientH layer (x, y, w, h, left, right) buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Horizontal gradient rectangle. (layer) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
x : int
y : int
w : int
h : int
left : Color
right : Color
buffer : RenderBuffer2D
Returns: RenderBuffer2D

rectGradientV layer (x, y, w, h, top, bottom) buffer

Full Usage: rectGradientV layer (x, y, w, h, top, bottom) buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Vertical gradient rectangle. (layer) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
x : int
y : int
w : int
h : int
top : Color
bottom : Color
buffer : RenderBuffer2D
Returns: RenderBuffer2D

rectOutline (layer, color, thickness) rect buffer

Full Usage: rectOutline (layer, color, thickness) rect buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Rectangle outline with thickness. (layer, color, thickness) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
thickness : float32
rect : Rectangle
buffer : RenderBuffer2D
Returns: RenderBuffer2D

rectRoundedOutline (layer, color, roundness, segments, thickness) rect buffer

Full Usage: rectRoundedOutline (layer, color, roundness, segments, thickness) rect buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Rounded rectangle outline with thickness. (layer, color, roundness, segments, thickness) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
roundness : float32
segments : int
thickness : float32
rect : Rectangle
buffer : RenderBuffer2D
Returns: RenderBuffer2D

ringOutline (layer, color) (center, innerR, outerR, startAngle, endAngle, segments) buffer

Full Usage: ringOutline (layer, color) (center, innerR, outerR, startAngle, endAngle, segments) buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Ring / arc outline. (layer, color) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
center : Vector2
innerR : float32
outerR : float32
startAngle : float32
endAngle : float32
segments : int
buffer : RenderBuffer2D
Returns: RenderBuffer2D

setBlend layer mode buffer

Full Usage: setBlend layer mode buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Sets the blending mode. (layer) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
mode : BlendMode
buffer : RenderBuffer2D
Returns: RenderBuffer2D

setLineWidth layer width buffer

Full Usage: setLineWidth layer width buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Sets the line width for subsequent line draws. (layer) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
width : float32
buffer : RenderBuffer2D
Returns: RenderBuffer2D

setScissor layer (x, y, w, h) buffer

Full Usage: setScissor layer (x, y, w, h) buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Enables scissor testing. (layer) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
x : int
y : int
w : int
h : int
buffer : RenderBuffer2D
Returns: RenderBuffer2D

setViewport layer (x, y, w, h) buffer

Full Usage: setViewport layer (x, y, w, h) buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Sets the viewport rectangle. (layer) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
x : int
y : int
w : int
h : int
buffer : RenderBuffer2D
Returns: RenderBuffer2D

sprite state buffer

Full Usage: sprite state buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Draws a sprite from a pre-configured SpriteState.

state : SpriteState
buffer : RenderBuffer2D
Returns: RenderBuffer2D

text state buffer

Full Usage: text state buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Draws text from a pre-configured TextState.

state : TextState
buffer : RenderBuffer2D
Returns: RenderBuffer2D

triangle (layer, color) (v1, v2, v3) buffer

Full Usage: triangle (layer, color) (v1, v2, v3) buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Filled triangle from 3 vertices. (layer, color) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
v1 : Vector2
v2 : Vector2
v3 : Vector2
buffer : RenderBuffer2D
Returns: RenderBuffer2D

triangleFan (layer, color) points buffer

Full Usage: triangleFan (layer, color) points buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Filled triangle fan. (layer, color) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
points : Vector2[]
buffer : RenderBuffer2D
Returns: RenderBuffer2D

triangleStrip (layer, color) points buffer

Full Usage: triangleStrip (layer, color) points buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Filled triangle strip. (layer, color) can be partially applied.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
points : Vector2[]
buffer : RenderBuffer2D
Returns: RenderBuffer2D

Type something to start searching.