mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-14 15:56:13 +03:00
39 lines
1.4 KiB
Zig
39 lines
1.4 KiB
Zig
const std = @import("std");
|
|
const Allocator = std.mem.Allocator;
|
|
const assert = std.debug.assert;
|
|
const objc = @import("objc");
|
|
|
|
const mtl = @import("api.zig");
|
|
|
|
pub const Sampler = struct {
|
|
sampler: objc.Object,
|
|
|
|
pub fn init(device: objc.Object) !Sampler {
|
|
const desc = init: {
|
|
const Class = objc.getClass("MTLSamplerDescriptor").?;
|
|
const id_alloc = Class.msgSend(objc.Object, objc.sel("alloc"), .{});
|
|
const id_init = id_alloc.msgSend(objc.Object, objc.sel("init"), .{});
|
|
break :init id_init;
|
|
};
|
|
defer desc.msgSend(void, objc.sel("release"), .{});
|
|
desc.setProperty("rAddressMode", @intFromEnum(mtl.MTLSamplerAddressMode.clamp_to_edge));
|
|
desc.setProperty("sAddressMode", @intFromEnum(mtl.MTLSamplerAddressMode.clamp_to_edge));
|
|
desc.setProperty("tAddressMode", @intFromEnum(mtl.MTLSamplerAddressMode.clamp_to_edge));
|
|
desc.setProperty("minFilter", @intFromEnum(mtl.MTLSamplerMinMagFilter.linear));
|
|
desc.setProperty("magFilter", @intFromEnum(mtl.MTLSamplerMinMagFilter.linear));
|
|
|
|
const sampler = device.msgSend(
|
|
objc.Object,
|
|
objc.sel("newSamplerStateWithDescriptor:"),
|
|
.{desc},
|
|
);
|
|
errdefer sampler.msgSend(void, objc.sel("release"), .{});
|
|
|
|
return .{ .sampler = sampler };
|
|
}
|
|
|
|
pub fn deinit(self: *Sampler) void {
|
|
self.sampler.msgSend(void, objc.sel("release"), .{});
|
|
}
|
|
};
|