diff options
author | HampusM <hampus@hampusmat.com> | 2025-06-03 17:26:26 +0200 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2025-06-03 17:26:26 +0200 |
commit | 93ee9ee9a37ac410ea926997f08e1d5db052bb86 (patch) | |
tree | 88b31c30cfb14469398a763fcc977eaea7d52383 | |
parent | 9023f12f74f5ec8836374383fd5c347612c5d42f (diff) |
refactor(engine): make texture mod not reexport from gl mod
-rw-r--r-- | engine/src/opengl/texture.rs | 52 | ||||
-rw-r--r-- | engine/src/renderer/opengl.rs | 38 | ||||
-rw-r--r-- | engine/src/texture.rs | 26 |
3 files changed, 66 insertions, 50 deletions
diff --git a/engine/src/opengl/texture.rs b/engine/src/opengl/texture.rs index ffc978b..706b9c9 100644 --- a/engine/src/opengl/texture.rs +++ b/engine/src/opengl/texture.rs @@ -1,5 +1,4 @@ use crate::data_types::dimens::Dimens; -use crate::texture::Properties; #[derive(Debug)] pub struct Texture @@ -41,16 +40,9 @@ impl Texture } } - pub fn apply_properties(&mut self, properties: &Properties) - { - self.set_wrap(properties.wrap); - self.set_magnifying_filter(properties.magnifying_filter); - self.set_minifying_filter(properties.minifying_filter); - } - pub fn set_wrap(&mut self, wrapping: Wrapping) { - let wrapping_gl = wrapping.to_gl(); + let wrapping_gl = wrapping as gl::types::GLenum; #[allow(clippy::cast_possible_wrap)] unsafe { @@ -61,7 +53,7 @@ impl Texture pub fn set_magnifying_filter(&mut self, filtering: Filtering) { - let filtering_gl = filtering.to_gl(); + let filtering_gl = filtering as gl::types::GLenum; #[allow(clippy::cast_possible_wrap)] unsafe { @@ -75,7 +67,7 @@ impl Texture pub fn set_minifying_filter(&mut self, filtering: Filtering) { - let filtering_gl = filtering.to_gl(); + let filtering_gl = filtering as gl::types::GLenum; #[allow(clippy::cast_possible_wrap)] unsafe { @@ -132,43 +124,21 @@ impl Drop for Texture /// Texture wrapping. #[derive(Debug, Clone, Copy)] +#[repr(u32)] pub enum Wrapping { - Repeat, - MirroredRepeat, - ClampToEdge, - ClampToBorder, -} - -impl Wrapping -{ - fn to_gl(self) -> gl::types::GLenum - { - match self { - Self::Repeat => gl::REPEAT, - Self::MirroredRepeat => gl::MIRRORED_REPEAT, - Self::ClampToEdge => gl::CLAMP_TO_EDGE, - Self::ClampToBorder => gl::CLAMP_TO_BORDER, - } - } + Repeat = gl::REPEAT, + MirroredRepeat = gl::MIRRORED_REPEAT, + ClampToEdge = gl::CLAMP_TO_EDGE, + ClampToBorder = gl::CLAMP_TO_BORDER, } #[derive(Debug, Clone, Copy)] +#[repr(u32)] pub enum Filtering { - Nearest, - Linear, -} - -impl Filtering -{ - fn to_gl(self) -> gl::types::GLenum - { - match self { - Self::Linear => gl::LINEAR, - Self::Nearest => gl::NEAREST, - } - } + Nearest = gl::NEAREST, + Linear = gl::LINEAR, } /// Texture pixel data format. diff --git a/engine/src/renderer/opengl.rs b/engine/src/renderer/opengl.rs index 3be892e..ea66de0 100644 --- a/engine/src/renderer/opengl.rs +++ b/engine/src/renderer/opengl.rs @@ -48,9 +48,11 @@ use crate::opengl::shader::{ }; use crate::opengl::texture::{ set_active_texture_unit, + Filtering as GlTextureFiltering, PixelDataFormat as GlTexturePixelDataFormat, Texture as GlTexture, TextureUnit, + Wrapping as GlTextureWrapping, }; use crate::opengl::vertex_array::{ DataType as VertexArrayDataType, @@ -68,7 +70,11 @@ use crate::opengl::{ use crate::projection::{ClipVolume, Projection}; use crate::renderer::opengl::vertex::{AttributeComponentType, Vertex}; use crate::renderer::RENDER_PHASE; -use crate::texture::Properties as TextureProperties; +use crate::texture::{ + Filtering as TextureFiltering, + Properties as TextureProperties, + Wrapping as TextureWrapping, +}; use crate::transform::{Scale, WorldPosition}; use crate::util::{defer, Defer, RefOrValue}; use crate::vector::{Vec2, Vec3}; @@ -357,7 +363,15 @@ fn create_gl_texture(image: &Image, texture_properties: &TextureProperties) -> G }, ); - gl_texture.apply_properties(texture_properties); + gl_texture.set_wrap(texture_wrapping_to_gl(texture_properties.wrap)); + + gl_texture.set_magnifying_filter(texture_filtering_to_gl( + texture_properties.magnifying_filter, + )); + + gl_texture.set_minifying_filter(texture_filtering_to_gl( + texture_properties.minifying_filter, + )); gl_texture } @@ -814,3 +828,23 @@ fn create_transformation_matrix(transformation: Transformation) -> Matrix<f32, 4 matrix } + +#[inline] +fn texture_wrapping_to_gl(texture_wrapping: TextureWrapping) -> GlTextureWrapping +{ + match texture_wrapping { + TextureWrapping::Repeat => GlTextureWrapping::Repeat, + TextureWrapping::MirroredRepeat => GlTextureWrapping::MirroredRepeat, + TextureWrapping::ClampToEdge => GlTextureWrapping::ClampToEdge, + TextureWrapping::ClampToBorder => GlTextureWrapping::ClampToBorder, + } +} + +#[inline] +fn texture_filtering_to_gl(texture_filtering: TextureFiltering) -> GlTextureFiltering +{ + match texture_filtering { + TextureFiltering::Linear => GlTextureFiltering::Linear, + TextureFiltering::Nearest => GlTextureFiltering::Nearest, + } +} diff --git a/engine/src/texture.rs b/engine/src/texture.rs index f119ac3..5510a1c 100644 --- a/engine/src/texture.rs +++ b/engine/src/texture.rs @@ -2,13 +2,6 @@ use crate::asset::Handle as AssetHandle; use crate::image::Image; use crate::util::builder; -mod reexports -{ - pub use crate::opengl::texture::{Filtering, Wrapping}; -} - -pub use reexports::*; - #[derive(Debug, Clone)] #[non_exhaustive] pub struct Texture @@ -76,3 +69,22 @@ impl Default for PropertiesBuilder Properties::default().into() } } + +#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[non_exhaustive] +pub enum Filtering +{ + Nearest, + Linear, +} + +/// Texture wrapping. +#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[non_exhaustive] +pub enum Wrapping +{ + Repeat, + MirroredRepeat, + ClampToEdge, + ClampToBorder, +} |