Header menu logo Mibo

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) 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 viewport/clear config. (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 custom shader/effect block. (layer) can be partially applied.

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

beginTarget layer target buffer

Full Usage: beginTarget layer target buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

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

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
target : RenderTarget2D
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 the scissor rectangle.

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

drawImmediate layer action buffer

Full Usage: drawImmediate layer action buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Flushes the SpriteBatch, exits camera, runs the action, then 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

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 block.

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

endTarget layer buffer

Full Usage: endTarget layer buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Ends the current render target and resumes back-buffer rendering.

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

particles layer texture particleData particleCount buffer

Full Usage: particles layer texture particleData particleCount buffer

Parameters:
Returns: RenderBuffer2D
Modifiers: inline

Adds a batched particle render command to the buffer.

layer : int<MeasureProduct<RenderLayer, MeasureOne>>
texture : Texture2D
particleData : Particle2D[]
particleCount : int
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 active blend 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 default line width for thick line primitives.

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 a scissor rectangle. (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 device viewport. (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.