aboutsummaryrefslogtreecommitdiff
path: root/vendor/libghostty-vt/pkg/opengl/Renderbuffer.zig
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-04-04 19:22:04 +0300
committerCan Celik <ogulcancelik@gmail.com>2026-04-05 01:23:06 +0300
commit41dd733ca7123c9ac4bfc6c781697a660e95b052 (patch)
tree3fc91815ca139ef2e0b281bba0abda4ef15175f4 /vendor/libghostty-vt/pkg/opengl/Renderbuffer.zig
parent55c138263e190a1e79d4b997bfb9397306c0ec1f (diff)
feat: finish ghostty pane backend integration
Diffstat (limited to 'vendor/libghostty-vt/pkg/opengl/Renderbuffer.zig')
-rw-r--r--vendor/libghostty-vt/pkg/opengl/Renderbuffer.zig56
1 files changed, 56 insertions, 0 deletions
diff --git a/vendor/libghostty-vt/pkg/opengl/Renderbuffer.zig b/vendor/libghostty-vt/pkg/opengl/Renderbuffer.zig
new file mode 100644
index 00000000..ef21287f
--- /dev/null
+++ b/vendor/libghostty-vt/pkg/opengl/Renderbuffer.zig
@@ -0,0 +1,56 @@
+const 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, &current);
+ 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();
+ }
+};