diff options
Diffstat (limited to 'vendor/libghostty-vt/src/renderer/opengl/Sampler.zig')
| -rw-r--r-- | vendor/libghostty-vt/src/renderer/opengl/Sampler.zig | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/vendor/libghostty-vt/src/renderer/opengl/Sampler.zig b/vendor/libghostty-vt/src/renderer/opengl/Sampler.zig new file mode 100644 index 00000000..f4013c68 --- /dev/null +++ b/vendor/libghostty-vt/src/renderer/opengl/Sampler.zig @@ -0,0 +1,45 @@ +//! Wrapper for handling samplers. +const Self = @This(); + +const std = @import("std"); +const Allocator = std.mem.Allocator; +const gl = @import("opengl"); + +const OpenGL = @import("../OpenGL.zig"); + +const log = std.log.scoped(.opengl); + +/// Options for initializing a sampler. +pub const Options = struct { + min_filter: gl.Texture.MinFilter, + mag_filter: gl.Texture.MagFilter, + wrap_s: gl.Texture.Wrap, + wrap_t: gl.Texture.Wrap, +}; + +sampler: gl.Sampler, + +pub const Error = error{ + /// An OpenGL API call failed. + OpenGLFailed, +}; + +/// Initialize a sampler +pub fn init( + opts: Options, +) Error!Self { + const sampler = gl.Sampler.create() catch return error.OpenGLFailed; + errdefer sampler.destroy(); + sampler.parameter(.WrapS, @intFromEnum(opts.wrap_s)) catch return error.OpenGLFailed; + sampler.parameter(.WrapT, @intFromEnum(opts.wrap_t)) catch return error.OpenGLFailed; + sampler.parameter(.MinFilter, @intFromEnum(opts.min_filter)) catch return error.OpenGLFailed; + sampler.parameter(.MagFilter, @intFromEnum(opts.mag_filter)) catch return error.OpenGLFailed; + + return .{ + .sampler = sampler, + }; +} + +pub fn deinit(self: Self) void { + self.sampler.destroy(); +} |
