Fork of zig-opengl
project, it was modified to work like vulkan-zig
.
You only need to download the gl.zig
file.
// api level will be a mix between GLES 3.1 and GL 4.3
const api_level = gl.gles31.intersect(gl.gl43);
// define what functions to load
pub const Loader = gl.LoaderWrapper(api_level.intersect(.{
.getString = true,
// .enable = true,
// .debugMessageCallback = true,
.getIntegerv = true,
.getStringi = true,
.frontFace = true,
.depthRangef = true,
.genVertexArrays = true,
.enableVertexAttribArray = true,
.vertexAttribPointer = true,
.vertexAttribDivisor = true,
.deleteVertexArrays = true,
.deleteProgram = true,
.deleteBuffers = true,
.genBuffers = true,
.bufferData = true,
.createShader = true,
.shaderSource = true,
.compileShader = true,
.getShaderiv = true,
.getShaderInfoLog = true,
.createProgram = true,
.attachShader = true,
.linkProgram = true,
.getProgramiv = true,
.getProgramInfoLog = true,
.deleteShader = true,
.uniform1i = true,
.getUniformLocation = true,
.genTextures = true,
.texParameteri = true,
.texImage2D = true,
.compressedTexImage2D = true,
.genFramebuffers = true,
.framebufferTexture2D = true,
.drawBuffers = true,
.readBuffer = true,
.deleteFramebuffers = true,
.deleteTextures = true,
.enable = true,
.polygonOffset = true,
.disable = true,
.bindFramebuffer = true,
.viewport = true,
.clearColor = true,
.clear = true,
.bindVertexArray = true,
.bufferSubData = true,
.useProgram = true,
.depthFunc = true,
.cullFace = true,
.uniform4fv = true,
.activeTexture = true,
.bindTexture = true,
.drawElementsInstanced = true,
.bindBuffer = true,
}));
// define a function loader
// on windows for instance, the opengl functions are splited in opengl32.dll and wgl.dll
// but on android everything can be found under egl.so
const PfnLoader = struct {
// ...
pub fn getProcAddress(self: *const @This(), name: [*:0]const u8) ?*const fn () callconv(.C) isize {
// ...
}
};
var gll = core.GLRenderer.Loader.init(); // zero inited fn pointers (not required)
try gll.load(PfnLoader{ ... });