← ziglang.inraylib-zigGitHub

gl

rlgl, raylib's OpenGL layer (as rl.gl). 163 functions, from raylib's rlgl.

Functions Declaration - Matrix operations

rl.gl.multMatrixf

Multiply the current matrix by another matrix

Multiply the current matrix by another matrix (column-major float[16])

Zigfn multMatrixf(matf: *const [16]f32) void
Cvoid rlMultMatrixf(const float *matf);

Used in textures_portal_window.

rl.gl.frustum

Zigfn frustum(left: f64, right: f64, bottom: f64, top: f64, znear: f64, zfar: f64) void
Cvoid rlFrustum(double left, double right, double bottom, double top, double znear, double zfar);

rl.gl.ortho

Zigfn ortho(left: f64, right: f64, bottom: f64, top: f64, znear: f64, zfar: f64) void
Cvoid rlOrtho(double left, double right, double bottom, double top, double znear, double zfar);

rl.gl.setClipPlanes

Set clip planes distances

Zigfn setClipPlanes(nearPlane: f64, farPlane: f64) void
Cvoid rlSetClipPlanes(double nearPlane, double farPlane);

Functions Declaration - Vertex level operations

rl.gl.vertex2i

Define one vertex (position) - 2 int

Zigfn vertex2i(x: i32, y: i32) void
Cvoid rlVertex2i(int x, int y);

rl.gl.color3f

Define one vertex (color) - 3 float

Zigfn color3f(x: f32, y: f32, z: f32) void
Cvoid rlColor3f(float x, float y, float z);

rl.gl.color4f

Define one vertex (color) - 4 float

Zigfn color4f(x: f32, y: f32, z: f32, w: f32) void
Cvoid rlColor4f(float x, float y, float z, float w);

Used in shapes_rlgl_color_wheel.

Vertex buffers state

rl.gl.enableVertexBuffer

Enable vertex buffer (VBO)

Zigfn enableVertexBuffer(id: u32) void
Cvoid rlEnableVertexBuffer(unsigned int id);

rl.gl.enableVertexBufferElement

Enable vertex buffer element (VBO element)

Zigfn enableVertexBufferElement(id: u32) void
Cvoid rlEnableVertexBufferElement(unsigned int id);

rl.gl.disableVertexAttribute

Disable vertex attribute index

Zigfn disableVertexAttribute(index: u32) void
Cvoid rlDisableVertexAttribute(unsigned int index);

rl.gl.enableStatePointer

Enable attribute state pointer

Zigfn enableStatePointer(vertexAttribType: i32, buffer: ?*anyopaque) void
Cvoid rlEnableStatePointer(int vertexAttribType, void *buffer);

rl.gl.disableStatePointer

Disable attribute state pointer

Zigfn disableStatePointer(vertexAttribType: i32) void
Cvoid rlDisableStatePointer(int vertexAttribType);

Textures state

rl.gl.enableTextureCubemap

Enable texture cubemap

Zigfn enableTextureCubemap(id: u32) void
Cvoid rlEnableTextureCubemap(unsigned int id);

rl.gl.textureParameters

Set texture parameters (filter, wrap)

Zigfn textureParameters(id: u32, param: i32, value: i32) void
Cvoid rlTextureParameters(unsigned int id, int param, int value);

rl.gl.cubemapParameters

Set cubemap parameters (filter, wrap)

Zigfn cubemapParameters(id: u32, param: i32, value: i32) void
Cvoid rlCubemapParameters(unsigned int id, int param, int value);

Shader state

Framebuffer state

rl.gl.getActiveFramebuffer

Get the currently active render texture (fbo), 0 for default framebuffer

Zigfn getActiveFramebuffer() u32
Cunsigned int rlGetActiveFramebuffer(void);

rl.gl.blitFramebuffer

Blit active framebuffer to main framebuffer

Zigfn blitFramebuffer(srcX: i32, srcY: i32, srcWidth: i32, srcHeight: i32, dstX: i32, dstY: i32, dstWidth: i32, dstHeight: i32, bufferMask: i32) void
Cvoid rlBlitFramebuffer(int srcX, int srcY, int srcWidth, int srcHeight, int dstX, int dstY, int dstWidth, int dstHeight, int bufferMask);

Used in shaders_deferred_rendering.

General render state

rl.gl.colorMask

Color mask control

Zigfn colorMask(r: bool, g: bool, b: bool, a: bool) void
Cvoid rlColorMask(bool r, bool g, bool b, bool a);

Used in gl_scissor_shapes.

rl.gl.scissor

Scissor test

Zigfn scissor(x: i32, y: i32, width: i32, height: i32) void
Cvoid rlScissor(int x, int y, int width, int height);

rl.gl.setPointSize

Set the point drawing size

Zigfn setPointSize(size: f32) void
Cvoid rlSetPointSize(float size);

rl.gl.getPointSize

Get the point drawing size

Zigfn getPointSize() f32
Cfloat rlGetPointSize(void);

rl.gl.setLineWidth

Set the line drawing width

Zigfn setLineWidth(width: f32) void
Cvoid rlSetLineWidth(float width);

rl.gl.getLineWidth

Get the line drawing width

Zigfn getLineWidth() f32
Cfloat rlGetLineWidth(void);

rl.gl.clearColor

Clear color buffer with color

Zigfn clearColor(r: u8, g: u8, b: u8, a: u8) void
Cvoid rlClearColor(unsigned char r, unsigned char g, unsigned char b, unsigned char a);

Used in shaders_deferred_rendering.

rl.gl.checkErrors

Check and log OpenGL error codes

Zigfn checkErrors() void
Cvoid rlCheckErrors(void);

rl.gl.setBlendFactors

Set blending mode factor and equation (using OpenGL factors)

Zigfn setBlendFactors(glSrcFactor: i32, glDstFactor: i32, glEquation: i32) void
Cvoid rlSetBlendFactors(int glSrcFactor, int glDstFactor, int glEquation);

Used in shapes_top_down_lights.

rl.gl.setBlendFactorsSeparate

Set blending mode factors and equations separately (using OpenGL factors)

Zigfn setBlendFactorsSeparate(glSrcRGB: i32, glDstRGB: i32, glSrcAlpha: i32, glDstAlpha: i32, glEqRGB: i32, glEqAlpha: i32) void
Cvoid rlSetBlendFactorsSeparate(int glSrcRGB, int glDstRGB, int glSrcAlpha, int glDstAlpha, int glEqRGB, int glEqAlpha);

Used in textures_magnifying_glass.

rlgl initialization functions

rl.gl.init

Initialize rlgl (buffers, shaders, textures, states)

Zigfn init(width: i32, height: i32) void
Cvoid rlglInit(int width, int height);

rl.gl.close

De-initialize rlgl (buffers, shaders, textures)

Zigfn close() void
Cvoid rlglClose(void);

rl.gl.loadExtensions

Load OpenGL extensions (loader function required)

Zigfn loadExtensions(loader: ?*anyopaque) void
Cvoid rlLoadExtensions(void *loader);

rl.gl.getProcAddress

Get OpenGL procedure address

Zigfn getProcAddress(procName: [:0]const u8) ?*anyopaque
Cvoid *rlGetProcAddress(const char *procName);

rl.gl.getVersion

Get current OpenGL version

Zigfn getVersion() i32
Cint rlGetVersion(void);

rl.gl.setFramebufferWidth

Set current framebuffer width

Zigfn setFramebufferWidth(width: i32) void
Cvoid rlSetFramebufferWidth(int width);

rl.gl.setFramebufferHeight

Set current framebuffer height

Zigfn setFramebufferHeight(height: i32) void
Cvoid rlSetFramebufferHeight(int height);

rl.gl.getShaderLocsDefault

Get default shader locations

Get default shader locations (RL_MAX_SHADER_LOCATIONS entries)

Zigfn getShaderLocsDefault() [*]i32
Cint *rlGetShaderLocsDefault(void);

but this render batch API is exposed in case of custom batches are required

rl.gl.loadRenderBatch

Load a render batch system

Zigfn loadRenderBatch(numBuffers: i32, bufferElements: i32) RenderBatch
CrlRenderBatch rlLoadRenderBatch(int numBuffers, int bufferElements);

rl.gl.unloadRenderBatch

Unload render batch system

Zigfn unloadRenderBatch(batch: RenderBatch) void
Cvoid rlUnloadRenderBatch(rlRenderBatch batch);

rl.gl.drawRenderBatch

Draw render batch data (Update->Draw->Reset)

Zigfn drawRenderBatch(batch: *RenderBatch) void
Cvoid rlDrawRenderBatch(rlRenderBatch *batch);

rl.gl.setRenderBatchActive

Set the active render batch for rlgl (NULL for default internal)

Set the active render batch for rlgl (null for default internal)

Zigfn setRenderBatchActive(batch: ?*RenderBatch) void
Cvoid rlSetRenderBatchActive(rlRenderBatch *batch);

Vertex buffers management

rl.gl.loadVertexArray

Load vertex array (vao) if supported

Zigfn loadVertexArray() u32
Cunsigned int rlLoadVertexArray(void);

rl.gl.loadVertexBufferElement

Load vertex buffer elements object

Zigfn loadVertexBufferElement(buffer: []const u8, dynamic: bool) u32
Cunsigned int rlLoadVertexBufferElement(const void *buffer, int size, bool dynamic);

rl.gl.updateVertexBuffer

Update vertex buffer object data on GPU buffer

Zigfn updateVertexBuffer(bufferId: u32, data: []const u8, offset: i32) void
Cvoid rlUpdateVertexBuffer(unsigned int bufferId, const void *data, int dataSize, int offset);

Used in models_animation_blend_custom.

rl.gl.updateVertexBufferElements

Update vertex buffer elements data on GPU buffer

Zigfn updateVertexBufferElements(id: u32, data: []const u8, offset: i32) void
Cvoid rlUpdateVertexBufferElements(unsigned int id, const void *data, int dataSize, int offset);

rl.gl.unloadVertexArray

Unload vertex array (vao)

Zigfn unloadVertexArray(vaoId: u32) void
Cvoid rlUnloadVertexArray(unsigned int vaoId);

rl.gl.unloadVertexBuffer

Unload vertex buffer object

Zigfn unloadVertexBuffer(vboId: u32) void
Cvoid rlUnloadVertexBuffer(unsigned int vboId);

rl.gl.setVertexAttribute

Set vertex attribute data configuration

Zigfn setVertexAttribute(index: u32, compSize: i32, @"type": i32, normalized: bool, stride: i32, offset: i32) void
Cvoid rlSetVertexAttribute(unsigned int index, int compSize, int type, bool normalized, int stride, int offset);

Used in shaders_lightmap_rendering.

rl.gl.setVertexAttributeDivisor

Set vertex attribute data divisor

Zigfn setVertexAttributeDivisor(index: u32, divisor: i32) void
Cvoid rlSetVertexAttributeDivisor(unsigned int index, int divisor);

rl.gl.setVertexAttributeDefault

Set vertex attribute default value, when attribute to provided

Zigfn setVertexAttributeDefault(locIndex: i32, value: ?*const anyopaque, attribType: i32, count: i32) void
Cvoid rlSetVertexAttributeDefault(int locIndex, const void *value, int attribType, int count);

rl.gl.drawVertexArray

Draw vertex array (currently active vao)

Zigfn drawVertexArray(offset: i32, count: i32) void
Cvoid rlDrawVertexArray(int offset, int count);

rl.gl.drawVertexArrayElements

Draw vertex array elements

Zigfn drawVertexArrayElements(offset: i32, count: i32, buffer: ?*const anyopaque) void
Cvoid rlDrawVertexArrayElements(int offset, int count, const void *buffer);

rl.gl.drawVertexArrayInstanced

Draw vertex array (currently active vao) with instancing

Zigfn drawVertexArrayInstanced(offset: i32, count: i32, instances: i32) void
Cvoid rlDrawVertexArrayInstanced(int offset, int count, int instances);

rl.gl.drawVertexArrayElementsInstanced

Draw vertex array elements with instancing

Zigfn drawVertexArrayElementsInstanced(offset: i32, count: i32, buffer: ?*const anyopaque, instances: i32) void
Cvoid rlDrawVertexArrayElementsInstanced(int offset, int count, const void *buffer, int instances);

Textures management

rl.gl.loadTextureCubemap

Load texture cubemap data

Zigfn loadTextureCubemap(data: ?*const anyopaque, size: i32, format: i32, mipmapCount: i32) u32
Cunsigned int rlLoadTextureCubemap(const void *data, int size, int format, int mipmapCount);

Used in models_skybox_rendering.

rl.gl.updateTexture

Update texture with new data on GPU

Zigfn updateTexture(id: u32, offsetX: i32, offsetY: i32, width: i32, height: i32, format: i32, data: ?*const anyopaque) void
Cvoid rlUpdateTexture(unsigned int id, int offsetX, int offsetY, int width, int height, int format, const void *data);

rl.gl.getGlTextureFormats

Get OpenGL internal formats

Zigfn getGlTextureFormats(format: i32, glInternalFormat: *c_uint, glFormat: *c_uint, glType: *c_uint) void
Cvoid rlGetGlTextureFormats(int format, unsigned int *glInternalFormat, unsigned int *glFormat, unsigned int *glType);

rl.gl.getPixelFormatName

Get name string for pixel format

Zigfn getPixelFormatName(format: u32) [:0]const u8
Cconst char *rlGetPixelFormatName(unsigned int format);

rl.gl.genTextureMipmaps

Generate mipmap data for selected texture

Zigfn genTextureMipmaps(id: u32, width: i32, height: i32, format: i32, mipmaps: *c_int) void
Cvoid rlGenTextureMipmaps(unsigned int id, int width, int height, int format, int *mipmaps);

rl.gl.readTexturePixels

Read texture pixel data

Zigfn readTexturePixels(id: u32, width: i32, height: i32, format: i32) ?*anyopaque
Cvoid *rlReadTexturePixels(unsigned int id, int width, int height, int format);

rl.gl.readScreenPixels

Read screen pixel data (color buffer)

Read screen pixel data (color buffer, RGBA). Free with `rl.memFree`.

Zigfn readScreenPixels(width: i32, height: i32) ?[]u8
Cunsigned char *rlReadScreenPixels(int width, int height);

Framebuffer management (fbo)

rl.gl.copyFramebuffer

Copy framebuffer pixel data to internal buffer

Zigfn copyFramebuffer(x: i32, y: i32, width: i32, height: i32, format: i32, pixels: ?*anyopaque) void
Cvoid rlCopyFramebuffer(int x, int y, int width, int height, int format, void *pixels);

rl.gl.resizeFramebuffer

Resize internal framebuffer

Zigfn resizeFramebuffer(width: i32, height: i32) void
Cvoid rlResizeFramebuffer(int width, int height);

Shaders management

rl.gl.loadShader

Load (compile) shader and return shader id (type: RL_VERTEX_SHADER, RL_FRAGMENT_SHADER, RL_COMPUTE_SHADER)

Zigfn loadShader(code: [:0]const u8, @"type": i32) u32
Cunsigned int rlLoadShader(const char *code, int type);

Used in shaders_rlgl_compute.

rl.gl.loadShaderProgram

Load shader from code strings

Zigfn loadShaderProgram(vsCode: [:0]const u8, fsCode: [:0]const u8) u32
Cunsigned int rlLoadShaderProgram(const char *vsCode, const char *fsCode);

rl.gl.loadShaderProgramEx

Load shader program, using already loaded shader ids

Zigfn loadShaderProgramEx(vsId: u32, fsId: u32) u32
Cunsigned int rlLoadShaderProgramEx(unsigned int vsId, unsigned int fsId);

rl.gl.getLocationAttrib

Get shader location attribute, requires shader program id

Zigfn getLocationAttrib(id: u32, attribName: [:0]const u8) i32
Cint rlGetLocationAttrib(unsigned int id, const char *attribName);

rl.gl.setUniform

Set shader value uniform

Zigfn setUniform(locIndex: i32, value: ?*const anyopaque, uniformType: i32, count: i32) void
Cvoid rlSetUniform(int locIndex, const void *value, int uniformType, int count);

Used in shaders_shadowmap_rendering.

rl.gl.setUniformMatrices

Set shader value matrices

Zigfn setUniformMatrices(locIndex: i32, mat: []const Matrix) void
Cvoid rlSetUniformMatrices(int locIndex, const Matrix *mat, int count);

rl.gl.setShader

Set shader currently active (id and locations)

Zigfn setShader(id: u32, locs: [*]i32) void
Cvoid rlSetShader(unsigned int id, int *locs);

Compute shader management

rl.gl.computeShaderDispatch

Dispatch compute shader (equivalent to *draw* for graphics pipeline)

Zigfn computeShaderDispatch(groupX: u32, groupY: u32, groupZ: u32) void
Cvoid rlComputeShaderDispatch(unsigned int groupX, unsigned int groupY, unsigned int groupZ);

Used in shaders_rlgl_compute.

Shader buffer storage object management (ssbo)

rl.gl.loadShaderBuffer

Load shader storage buffer object (SSBO)

Zigfn loadShaderBuffer(size: u32, data: ?*const anyopaque, usageHint: i32) u32
Cunsigned int rlLoadShaderBuffer(unsigned int size, const void *data, int usageHint);

Used in shaders_rlgl_compute.

rl.gl.updateShaderBuffer

Update SSBO buffer data

Zigfn updateShaderBuffer(id: u32, data: []const u8, offset: u32) void
Cvoid rlUpdateShaderBuffer(unsigned int id, const void *data, unsigned int dataSize, unsigned int offset);

Used in shaders_rlgl_compute.

rl.gl.readShaderBuffer

Read SSBO buffer data (GPU->CPU)

Zigfn readShaderBuffer(id: u32, dest: ?*anyopaque, count: u32, offset: u32) void
Cvoid rlReadShaderBuffer(unsigned int id, void *dest, unsigned int count, unsigned int offset);

rl.gl.copyShaderBuffer

Copy SSBO data between buffers

Zigfn copyShaderBuffer(destId: u32, srcId: u32, destOffset: u32, srcOffset: u32, count: u32) void
Cvoid rlCopyShaderBuffer(unsigned int destId, unsigned int srcId, unsigned int destOffset, unsigned int srcOffset, unsigned int count);

rl.gl.getShaderBufferSize

Get SSBO buffer size

Zigfn getShaderBufferSize(id: u32) u32
Cunsigned int rlGetShaderBufferSize(unsigned int id);

Buffer management

rl.gl.bindImageTexture

Bind image texture

Zigfn bindImageTexture(id: u32, index: u32, format: i32, readonly: bool) void
Cvoid rlBindImageTexture(unsigned int id, unsigned int index, int format, bool readonly);

Matrix state management

rl.gl.getMatrixTransform

Get internal accumulated transform matrix

Zigfn getMatrixTransform() Matrix
CMatrix rlGetMatrixTransform(void);

rl.gl.getMatrixProjectionStereo

Get internal projection matrix for stereo render (selected eye)

Zigfn getMatrixProjectionStereo(eye: i32) Matrix
CMatrix rlGetMatrixProjectionStereo(int eye);

rl.gl.getMatrixViewOffsetStereo

Get internal view offset matrix for stereo render (selected eye)

Zigfn getMatrixViewOffsetStereo(eye: i32) Matrix
CMatrix rlGetMatrixViewOffsetStereo(int eye);

rl.gl.setMatrixModelview

Set a custom modelview matrix (replaces internal modelview matrix)

Zigfn setMatrixModelview(view: Matrix) void
Cvoid rlSetMatrixModelview(Matrix view);

rl.gl.setMatrixProjectionStereo

Set eyes projection matrices for stereo rendering

Zigfn setMatrixProjectionStereo(right: Matrix, left: Matrix) void
Cvoid rlSetMatrixProjectionStereo(Matrix right, Matrix left);

rl.gl.setMatrixViewOffsetStereo

Set eyes view offsets matrices for stereo rendering

Zigfn setMatrixViewOffsetStereo(right: Matrix, left: Matrix) void
Cvoid rlSetMatrixViewOffsetStereo(Matrix right, Matrix left);

Quick and dirty cube/quad buffers load->draw->unload