gpu/data/textures/
sampler.rs1use crate::prelude::*;
4use crate::{Context, GLContext};
5
6type SamplerResource = <glow::Context as HasContext>::Sampler;
7
8pub struct Sampler {
10 gl : GLContext,
11 resource : SamplerResource
12}
13
14impl Sampler {
15 pub fn new(context:&Context) -> Self {
17 let gl = context.gl_context();
18 let resource = unsafe {
19 let resource = gl.create_sampler().expect("Couldn't create sampler");
20 gl.sampler_parameter_i32(resource, glow::TEXTURE_WRAP_S, glow::REPEAT as i32);
21 gl.sampler_parameter_i32(resource, glow::TEXTURE_WRAP_T, glow::REPEAT as i32);
22 gl.sampler_parameter_i32(resource, glow::TEXTURE_MIN_FILTER, glow::NEAREST as i32);
23 gl.sampler_parameter_i32(resource, glow::TEXTURE_MAG_FILTER, glow::NEAREST as i32);
24 resource
25 };
26 Self { gl, resource }
27 }
28
29 pub fn resource(&self) -> SamplerResource {
31 self.resource
32 }
33}
34
35impl Drop for Sampler {
36 fn drop(&mut self) {
37 unsafe {
38 self.gl.delete_sampler(self.resource());
39 }
40 }
41}