Something went wrong. Try again.
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657const Renderbuffer = @This();
const std = @import("std");const c = @import("c.zig").c;const errors = @import("errors.zig");const glad = @import("glad.zig");
const Texture = @import("Texture.zig");
id: c.GLuint,
/// Create a single buffer.pub fn create() !Renderbuffer { var rbo: c.GLuint = undefined; glad.context.GenRenderbuffers.?(1, &rbo); return .{ .id = rbo };}
pub fn destroy(v: Renderbuffer) void { glad.context.DeleteRenderbuffers.?(1, &v.id);}
pub fn bind(v: Renderbuffer) !Binding { // Keep track of the previous binding so we can restore it in unbind. var current: c.GLint = undefined; glad.context.GetIntegerv.?(c.GL_RENDERBUFFER_BINDING, ¤t); glad.context.BindRenderbuffer.?(c.GL_RENDERBUFFER, v.id); return .{ .previous = @intCast(current) };}
pub const Binding = struct { previous: c.GLuint,
pub fn unbind(self: Binding) void { glad.context.BindRenderbuffer.?( c.GL_RENDERBUFFER, self.previous, ); }
pub fn storage( self: Binding, format: Texture.InternalFormat, width: c.GLsizei, height: c.GLsizei, ) !void { _ = self; glad.context.RenderbufferStorage.?( c.GL_RENDERBUFFER, @intCast(@intFromEnum(format)), width, height, ); try errors.getError(); }};