Files
ghostty/pkg/opengl/Renderbuffer.zig
Mitchell Hashimoto eccd07f009 pkg: replace @cImport with addTranslateC in pkg/
@cImport is going to disappear in Zig 0.17. Its deprecated in Zig 0.16.
Let's remove it now.

Replace @cImport with addTranslateC across pkg/ packages. Each
package now has a c_import.h header that is translated at build
time via addTranslateC and exposed as a "cimport" module import.

Converted packages:
- dcimgui
- fontconfig
- freetype
- glslang
- harfbuzz
- macos
- oniguruma
- opengl
- sentry
- spirv-cross
- wuffs

Omitted:
- gtk4-layer-shell - This has a bit more complexity with how it
  interacts with GTK headers, so I need to consider this a bit more.
- src/ - It'll be cleaner to do this separately.
2026-04-16 21:35:51 -07:00

57 lines
1.4 KiB
Zig

const Renderbuffer = @This();
const std = @import("std");
const c = @import("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();
}
};