GLGraphics

clay.opengl.GLGraphics (Class)

A set of helpers to interact with GL stuff. Public API is trying to be a bit agnostic so that other non-GL implementations could be replaced fairly easily.

Static Members

NO_TEXTURE: clay.TextureId

NO_FRAMEBUFFER: GLFramebuffer

NO_RENDERBUFFER: GLRenderbuffer

NO_SHADER: GLShader

NO_PROGRAM: GLProgram

NO_LOCATION: GLUniformLocation

NO_BUFFER: GLBuffer

clear(r: Float, g: Float, b: Float, a: Float, ?clearDepth: Bool = true): Void

Clear the current render buffer

Name Type Default Description
r Float red value (between 0 and 1)
g Float green value (between 0 and 1)
b Float blue value (between 0 and 1)
a Float alpha value (between 0 and 1)
clearDepth Bool true set to true (default) to also clear depth buffer, if applicable

createTextureId(): clay.TextureId

Create a new texture and return its identifier

Returns Description
clay.TextureId TextureId

setActiveTexture(slot: Int): Void

Set active texture slot

Name Type Description
slot Int a slot number. Assigned expression will be GL.TEXTURE0 + slot on GL

deleteTexture(textureId: clay.TextureId): Void

Delete the texture identified with textureId from the GPU

Name Type
textureId clay.TextureId

setViewport(x: Int, y: Int, width: Int, height: Int): Void

Set current viewport delimited with x, y, width and height

Name Type Description
x Int The x value to specify lower left corner of viewport
y Int The y value to specify lower left corner of viewport
width Int The width of the viewport
height Int The height of the viewport

bindTexture2d(textureId: clay.TextureId): Void

Bind the texture identified by textureId to do some work with it

Name Type Description
textureId clay.TextureId a valid texture identifier returned by createTextureId() or NO_TEXTURE to unbind texture

maxTextureSize(): Int

Return the maximum size of a texture from the hardware

Returns Description
Int Int

needsPreprocessedPremultipliedAlpha(): Bool

Returns true if premultiplied textures should have their pixels buffer preprocessed before submit

Returns Description
Bool Bool

submitCompressedTexture2dPixels(level: Int, format: clay.TextureFormat, width: Int, height: Int, pixels: clay.buffers.Uint8Array, premultipliedAlpha: Bool): Void

Submit compressed texture 2D pixels

Name Type Description
level Int The level of detail. Level 0 is the base image level. Level n is the nth mipmap reduction image.
format clay.TextureFormat The texture format (RGBA)
width Int The width of the texture to submit
height Int The height of the texture to submit
pixels clay.buffers.Uint8Array The pixels buffer when the data will be written to
premultipliedAlpha Bool The pixels buffer should be stored as premultiplied alpha

submitTexture2dPixels(level: Int, format: clay.TextureFormat, width: Int, height: Int, dataType: clay.TextureDataType, pixels: clay.buffers.Uint8Array, premultipliedAlpha: Bool): Void

Fetch 2d texture pixels

Name Type Description
level Int The level of detail. Level 0 is the base image level. Level n is the nth mipmap reduction image.
format clay.TextureFormat The texture format (RGBA)
width Int The width of the texture to submit
height Int The height of the texture to submit
dataType clay.TextureDataType The data type of the pixel data (UNSIGNED_BYTE)
pixels clay.buffers.Uint8Array The pixels buffer containing data to submit
premultipliedAlpha Bool The pixels buffer should be stored as premultiplied alpha

fetchTexture2dPixels(into: clay.buffers.Uint8Array, x: Int, y: Int, w: Int, h: Int): Void

Fetch texture 2d pixels

Name Type Description
into clay.buffers.Uint8Array The pixels buffer when the data will be written to
x Int The x position of the texture rect to fetch
y Int The y position of the texture rect to fetch
w Int The width of the texture rect to fetch
h Int The height of the texture rect to fetch

createFramebuffer(): GLFramebuffer

Create a new framebuffer

Returns Description
GLFramebuffer Framebuffer

bindFramebuffer(framebuffer: GLFramebuffer): Void

Bind a framebuffer to work with it

Name Type Description
framebuffer GLFramebuffer The framebuffer to bind

createRenderbuffer(): GLRenderbuffer

Create a new renderbuffer

Returns Description
GLRenderbuffer Renderbuffer

bindRenderbuffer(renderbuffer: GLRenderbuffer): Void

Bind a renderbuffer to work with it

Name Type Description
renderbuffer GLRenderbuffer The renderbuffer to bind

setTexture2dMinFilter(minFilter: clay.TextureFilter): Void

Set 2d texture minification filter

Name Type
minFilter clay.TextureFilter

setTexture2dMagFilter(magFilter: clay.TextureFilter): Void

Set 2d texture magnification filter

Name Type
magFilter clay.TextureFilter

setTexture2dWrapS(wrapS: clay.TextureWrap): Void

Set 2d texture s (horizontal) clamp type

Name Type
wrapS clay.TextureWrap

setTexture2dWrapT(wrapT: clay.TextureWrap): Void

Set 2d texture t (vertical) clamp type

Name Type
wrapT clay.TextureWrap

configureRenderTargetBuffersStorage(renderTarget: GLGraphics_RenderTarget, textureId: clay.TextureId, width: Int, height: Int, depth: Bool, stencil: Bool, antialiasing: Int): Void

Configure storage for the given framebuffer and renderbuffer with the given settings. This helper is a bit higher level to make it easier to configure buffers depending on the platform.

Name Type Description
renderTarget GLGraphics_RenderTarget
textureId clay.TextureId *
width Int *
height Int *
depth Bool
stencil Bool *
antialiasing Int

blitRenderTargetBuffers(renderTarget: GLGraphics_RenderTarget, width: Int, height: Int): Void
Name Type
renderTarget GLGraphics_RenderTarget
width Int
height Int

createRenderTarget(textureId: clay.TextureId, width: Int, height: Int, depth: Bool, stencil: Bool, antialiasing: Int, level: Int, format: clay.TextureFormat, dataType: clay.TextureDataType): clay.RenderTarget

Create a render target from the given settings

Name Type Description
textureId clay.TextureId *
width Int *
height Int *
depth Bool *
stencil Bool *
antialiasing Int *
level Int The level of detail. Level 0 is the base image level. Level n is the nth mipmap reduction image.
format clay.TextureFormat The texture format (RGBA)
dataType clay.TextureDataType The data type of the pixel data (UNSIGNED_BYTE)
Returns
clay.RenderTarget

deleteRenderTarget(renderTarget: GLGraphics_RenderTarget): Void
Name Type
renderTarget GLGraphics_RenderTarget

setRenderTarget(renderTarget: GLGraphics_RenderTarget): Void
Name Type
renderTarget GLGraphics_RenderTarget

enableBlending(): Void

disableBlending(): Void

createShader(vertSource: String, fragSource: String, ?attributes: Array<String>, ?textures: Array<String>): clay.GpuShader
Name Type Default
vertSource String
fragSource String
attributes Array<String> (optional)
textures Array<String> (optional)
Returns
clay.GpuShader

linkShader(shader: GLGraphics_GpuShader, ?attributes: Array<String>): Bool
Name Type Default
shader GLGraphics_GpuShader
attributes Array<String> (optional)
Returns
Bool

configureShaderTextureSlots(shader: GLGraphics_GpuShader, textures: Array<String>): Void
Name Type
shader GLGraphics_GpuShader
textures Array<String>

useShader(shader: GLGraphics_GpuShader): Void
Name Type
shader GLGraphics_GpuShader

deleteShader(shader: GLGraphics_GpuShader): Void
Name Type
shader GLGraphics_GpuShader

compileGLShader(type: Int, source: String): GLShader
Name Type
type Int
source String
Returns
GLShader

getUniformLocation(shader: clay.GpuShader, name: String): GLUniformLocation
Name Type
shader clay.GpuShader
name String
Returns
GLUniformLocation

setIntUniform(shader: clay.GpuShader, location: GLUniformLocation, value: Int): Void
Name Type
shader clay.GpuShader
location GLUniformLocation
value Int

setIntArrayUniform(shader: clay.GpuShader, location: GLUniformLocation, value: clay.buffers.Int32Array): Void
Name Type
shader clay.GpuShader
location GLUniformLocation
value clay.buffers.Int32Array

setFloatUniform(shader: clay.GpuShader, location: GLUniformLocation, value: Float): Void
Name Type
shader clay.GpuShader
location GLUniformLocation
value Float

setFloatArrayUniform(shader: clay.GpuShader, location: GLUniformLocation, value: clay.buffers.Float32Array): Void
Name Type
shader clay.GpuShader
location GLUniformLocation
value clay.buffers.Float32Array

setVector2Uniform(shader: clay.GpuShader, location: GLUniformLocation, x: Float, y: Float): Void
Name Type
shader clay.GpuShader
location GLUniformLocation
x Float
y Float

setVector3Uniform(shader: clay.GpuShader, location: GLUniformLocation, x: Float, y: Float, z: Float): Void
Name Type
shader clay.GpuShader
location GLUniformLocation
x Float
y Float
z Float

setVector4Uniform(shader: clay.GpuShader, location: GLUniformLocation, x: Float, y: Float, z: Float, w: Float): Void
Name Type
shader clay.GpuShader
location GLUniformLocation
x Float
y Float
z Float
w Float

setColorUniform(shader: clay.GpuShader, location: GLUniformLocation, r: Float, g: Float, b: Float, a: Float): Void
Name Type
shader clay.GpuShader
location GLUniformLocation
r Float
g Float
b Float
a Float

setMatrix4Uniform(shader: clay.GpuShader, location: GLUniformLocation, value: clay.buffers.Float32Array): Void
Name Type
shader clay.GpuShader
location GLUniformLocation
value clay.buffers.Float32Array

setTexture2dUniform(shader: clay.GpuShader, location: GLUniformLocation, slot: Int, texture: clay.TextureId): Void
Name Type
shader clay.GpuShader
location GLUniformLocation
slot Int
texture clay.TextureId

setBlendFuncSeparate(srcRgb: clay.BlendMode, dstRgb: clay.BlendMode, srcAlpha: clay.BlendMode, dstAlpha: clay.BlendMode): Void
Name Type
srcRgb clay.BlendMode
dstRgb clay.BlendMode
srcAlpha clay.BlendMode
dstAlpha clay.BlendMode

ensureNoError(): Void

Private Members

DEPTH24_STENCIL8: Int

DEPTH_COMPONENT24: Int

TEXTURE_2D_MULTISAMPLE: Int

READ_FRAMEBUFFER: Int

DRAW_FRAMEBUFFER: Int

RGBA8: Int

COLOR: Int

clearBufferForBlitValues: clay.buffers.Float32Array

setup(): Void