Skip to content

Documentation / @debuffjp/core / Draw

Class: Draw ​

Defined in: render/draw.ts:49

Immediate-mode drawing in logical units, the same API on WebGL2 and Canvas 2D (ADR 0007). Everything batches automatically; call order is draw order.

Constructors ​

Constructor ​

new Draw(backend, smooth): Draw

Defined in: render/draw.ts:68

Internal

Parameters ​

backend ​

Backend

smooth ​

boolean

Default filtering for images (false for pixel art).

Returns ​

Draw

Properties ​

alpha ​

alpha: number = 1

Defined in: render/draw.ts:51

Global alpha multiplier for subsequent draws.


quads ​

quads: number = 0

Defined in: render/draw.ts:53

Quads (sprites, rects, glyph runs…) submitted this frame. Reset each frame; for diagnostics.


renderScale ​

renderScale: number = 1

Defined in: render/draw.ts:327

Internal


smooth ​

smooth: boolean

Defined in: render/draw.ts:71

Default filtering for images (false for pixel art).

Accessors ​

drawCalls ​

Get Signature ​

get drawCalls(): number

Defined in: render/draw.ts:80

Draw calls this frame: batched GPU calls on WebGL2, one per quad on Canvas 2D.

Returns ​

number


kind ​

Get Signature ​

get kind(): "webgl2" | "2d"

Defined in: render/draw.ts:75

Which backend is active.

Returns ​

"webgl2" | "2d"


raw ​

Get Signature ​

get raw(): RawContext

Defined in: render/draw.ts:85

Raw WebGL2RenderingContext or CanvasRenderingContext2D. Mixing raw calls with draw calls requires care.

Returns ​

RawContext

Methods ​

begin() ​

begin(clear, width, height, scale): void

Defined in: render/draw.ts:330

Internal

Parameters ​

clear ​

Color

width ​

number

height ​

number

scale ​

number

Returns ​

void


blend() ​

blend(mode): void

Defined in: render/draw.ts:194

Parameters ​

mode ​

BlendMode

Returns ​

void


circle() ​

circle(x, y, radius, color): void

Defined in: render/draw.ts:205

Filled circle (antialiased).

Parameters ​

x ​

number

y ​

number

radius ​

number

color ​

Color

Returns ​

void


clip() ​

clip(x, y, w, h, fn): void

Defined in: render/draw.ts:135

Run fn with drawing restricted to a rectangle (in current units), then restore. Nested clips intersect. Clips are axis-aligned on screen: under rotation the rectangle's screen bounds are used.

Parameters ​

x ​

number

y ​

number

w ​

number

h ​

number

fn ​

() => void

Returns ​

void


dispose() ​

dispose(): void

Defined in: render/draw.ts:359

Internal

Release GPU resources and listeners.

Returns ​

void


end() ​

end(): void

Defined in: render/draw.ts:354

Internal

Returns ​

void


invalidate() ​

invalidate(src): void

Defined in: render/draw.ts:320

Re-upload a source whose pixels changed (e.g. a canvas you draw into).

Parameters ​

src ​

TextureSource

Returns ​

void


line() ​

line(x1, y1, x2, y2, width, color): void

Defined in: render/draw.ts:212

Parameters ​

x1 ​

number

y1 ​

number

x2 ​

number

y2 ​

number

width ​

number

color ​

Color

Returns ​

void


measure() ​

measure(text, font?): object

Defined in: render/draw.ts:290

The logical box text() fills for this string and font, so layouts can align and centre without guessing. Same cache as text(), so measuring then drawing rasterises once.

Parameters ​

text ​

string

font? ​

string | BitmapFont = "8px monospace"

Returns ​

object

h ​

h: number

w ​

w: number


pop() ​

pop(): void

Defined in: render/draw.ts:101

Returns ​

void


push() ​

push(): void

Defined in: render/draw.ts:91

Returns ​

void


rect() ​

rect(x, y, w, h, color): void

Defined in: render/draw.ts:198

Parameters ​

x ​

number

y ​

number

w ​

number

h ​

number

color ​

Color

Returns ​

void


reset() ​

reset(): void

Defined in: render/draw.ts:342

Internal

Reset transform and blend between scene and afterRender hooks.

Returns ​

void


resize() ​

resize(w, h): void

Defined in: render/draw.ts:364

Internal

Parameters ​

w ​

number

h ​

number

Returns ​

void


rotate() ​

rotate(radians): void

Defined in: render/draw.ts:121

Parameters ​

radians ​

number

Returns ​

void


scale() ​

scale(x, y?): void

Defined in: render/draw.ts:113

Parameters ​

x ​

number

y? ​

number = x

Returns ​

void


setBackend() ​

setBackend(backend): void

Defined in: render/draw.ts:371

Internal

Switch to a backend that finished loading (the Canvas 2D fallback), at the current size.

Parameters ​

backend ​

Backend

Returns ​

void


sprite() ​

sprite(frame, x, y, o?): void

Defined in: render/draw.ts:225

Draw an image frame (or a whole image) at x, y, anchored by origin. Allocation-free hot path.

Parameters ​

frame ​

TextureSource | Frame

x ​

number

y ​

number

o? ​

SpriteDrawOptions = NO_OPTIONS

Returns ​

void


text() ​

text(text, x, y, o?): void

Defined in: render/draw.ts:271

Text, rasterised once and cached as a texture (crisp at the current render scale).

Parameters ​

text ​

string

x ​

number

y ​

number

o? ​

TextDrawOptions = {}

Returns ​

void


translate() ​

translate(x, y): void

Defined in: render/draw.ts:107

Parameters ​

x ​

number

y ​

number

Returns ​

void


withCamera() ​

withCamera(camera, fn): void

Defined in: render/draw.ts:174

Run fn with the camera's view applied, then restore.

Parameters ​

camera ​
view ​

() => Matrix

fn ​

() => void

Returns ​

void