Skip to content

2D Drawing

2D drawing methods allow you to draw shapes, lines, and individual pixels directly onto a display framebuffer.

Method
clear(displayId : DisplayID, r : number, g : number, b : number) : ()
drawCircle(displayId : DisplayID, cx : number, cy : number, radius : number, r : number, g : number, b : number, filled : boolean) : ()
drawEllipse(displayId : DisplayID, cx : number, cy : number, rx : number, ry : number, r : number, g : number, b : number, filled : boolean) : ()
drawLine(displayId : DisplayID, x1 : number, y1 : number, x2 : number, y2 : number, r : number, g : number, b : number) : ()
drawPolygon(displayId : DisplayID, pointsObj : table, r : number, g : number, b : number) : ()
drawPolylines(displayId : DisplayID, pointsObj : table, r : number, g : number, b : number) : ()
fillEllipse(displayId : DisplayID, cx : number, cy : number, rx : number, ry : number, r : number, g : number, b : number) : ()
fillRect(displayId : DisplayID, x : number, y : number, w : number, h : number, r : number, g : number, b : number) : ()
clipRect(displayId : DisplayID, x : number, y : number, w : number, h : number) : ()
clearClip(displayId : DisplayID) : ()
getPixel(displayId : DisplayID, x : number, y : number) : table
setPixel(displayId : DisplayID, x : number, y : number, r : number, g : number, b : number) : ()

Fills the entire display with a single color.

Requires: DisplayID, r : number, g : number, b : number

gpu.clear(displayId, 0, 0, 0)

Draws a circle at the specified position.

Set filled to true to draw a solid circle.

Requires: DisplayID, cx : number, cy : number, radius : number, r : number, g : number, b : number, filled : boolean

gpu.drawCircle(displayId, 100, 80, 30, 255, 0, 0, true)

Draws an ellipse with the specified radii.

Set filled to true to draw a solid ellipse.

Requires: DisplayID, cx : number, cy : number, rx : number, ry : number, r : number, g : number, b : number, filled : boolean

gpu.drawEllipse(displayId, 100, 80, 40, 20, 255, 255, 0, false)

Draws a line between two points.

Requires: DisplayID, x1 : number, y1 : number, x2 : number, y2 : number, r : number, g : number, b : number

gpu.drawLine(displayId, 0, 0, 100, 100, 255, 255, 255)

Draws a polygon using a list of points.

The pointsObj table should contain points in the following format:

{
{x1, y1},
{x2, y2},
{x3, y3}
}

Requires: DisplayID, pointsObj : table, r : number, g : number, b : number

gpu.drawPolygon(displayId, {
{20, 20},
{80, 20},
{50, 70}
}, 0, 255, 0)

Draws connected line segments through a list of points.

The pointsObj table requires at least two points.

Requires: DisplayID, pointsObj : table, r : number, g : number, b : number

gpu.drawPolylines(displayId, {
{10, 10},
{20, 30},
{50, 40},
{90, 10}
}, 255, 255, 255)

Draws a filled ellipse.

Requires: DisplayID, cx : number, cy : number, rx : number, ry : number, r : number, g : number, b : number

gpu.fillEllipse(displayId, 100, 80, 40, 20, 0, 200, 255)

Draws a filled rectangle.

Requires: DisplayID, x : number, y : number, w : number, h : number, r : number, g : number, b : number

gpu.fillRect(displayId, 10, 10, 60, 30, 255, 0, 0)

Restricts subsequent rendering operations to a rectangular region.

Requires: DisplayID, x : number, y : number, w : number, h : number

gpu.clipRect(displayId, 10, 10, 60, 30)

Removes the active clipping region.

Requires: DisplayID

gpu.clearClip(displayId)

Reads a pixel from the display and returns its color.

Requires: DisplayID, x : number, y : number

Returns:

{
r,
g,
b
}
local pixel = gpu.getPixel(displayId, 10, 10)
print(pixel.r, pixel.g, pixel.b)

Sets the color of a single pixel.

Requires: DisplayID, x : number, y : number, r : number, g : number, b : number

gpu.setPixel(displayId, 10, 10, 255, 255, 255)