summaryrefslogtreecommitdiff
path: root/pkg/opengl/Sampler.zig
blob: f5c15699f69afa6880e9dda22d9614b73e8f455f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
const Sampler = @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 sampler.
pub fn create() errors.Error!Sampler {
    var id: c.GLuint = undefined;
    glad.context.GenSamplers.?(1, &id);
    try errors.getError();
    return .{ .id = id };
}

/// glBindSampler
pub fn bind(v: Sampler, index: c_uint) !void {
    glad.context.BindSampler.?(index, v.id);
    try errors.getError();
}

pub fn parameter(
    self: Sampler,
    name: Texture.Parameter,
    value: anytype,
) errors.Error!void {
    switch (@TypeOf(value)) {
        c.GLint => glad.context.SamplerParameteri.?(
            self.id,
            @intFromEnum(name),
            value,
        ),
        else => unreachable,
    }
    try errors.getError();
}

pub fn destroy(v: Sampler) void {
    glad.context.DeleteSamplers.?(1, &v.id);
}