renderer/opengl: draw custom shaders, simplified

This commit is contained in:
Mitchell Hashimoto
2023-11-17 09:58:28 -08:00
parent da600fee8f
commit 5fc91401f2
4 changed files with 54 additions and 4 deletions

View File

@@ -84,3 +84,32 @@ pub fn deinit(self: CustomProgram) void {
self.vao.destroy();
self.program.destroy();
}
pub fn bind(self: CustomProgram) !Binding {
const program = try self.program.use();
errdefer program.unbind();
const vao = try self.vao.bind();
errdefer vao.unbind();
const ebo = try self.ebo.bind(.element_array);
errdefer ebo.unbind();
return .{
.program = program,
.vao = vao,
.ebo = ebo,
};
}
pub const Binding = struct {
program: gl.Program.Binding,
vao: gl.VertexArray.Binding,
ebo: gl.Buffer.Binding,
pub fn unbind(self: Binding) void {
self.ebo.unbind();
self.vao.unbind();
self.program.unbind();
}
};