From a0dce2164cf348416ea15c63c5baa52afa66508f Mon Sep 17 00:00:00 2001 From: HampusM Date: Sat, 22 Jun 2024 14:00:27 +0200 Subject: feat(engine): add ability to change polygon mode per object --- engine/src/opengl/mod.rs | 49 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) (limited to 'engine/src/opengl/mod.rs') diff --git a/engine/src/opengl/mod.rs b/engine/src/opengl/mod.rs index 40f0c58..0b1bb8a 100644 --- a/engine/src/opengl/mod.rs +++ b/engine/src/opengl/mod.rs @@ -33,6 +33,13 @@ pub fn clear_buffers(mask: BufferClearMask) } } +pub fn set_polygon_mode(face: impl Into, mode: impl Into) +{ + unsafe { + gl::PolygonMode(face.into() as u32, mode.into() as u32); + } +} + pub fn enable(capacity: Capability) { unsafe { @@ -56,3 +63,45 @@ pub enum Capability DepthTest = gl::DEPTH_TEST, MultiSample = gl::MULTISAMPLE, } + +#[derive(Debug)] +#[repr(u32)] +pub enum PolygonMode +{ + Point = gl::POINT, + Line = gl::LINE, + Fill = gl::FILL, +} + +impl From for PolygonMode +{ + fn from(mode: crate::draw_flags::PolygonMode) -> Self + { + match mode { + crate::draw_flags::PolygonMode::Point => Self::Point, + crate::draw_flags::PolygonMode::Fill => Self::Fill, + crate::draw_flags::PolygonMode::Line => Self::Line, + } + } +} + +#[derive(Debug)] +#[repr(u32)] +pub enum PolygonModeFace +{ + Front = gl::FRONT, + Back = gl::BACK, + FrontAndBack = gl::FRONT_AND_BACK, +} + +impl From for PolygonModeFace +{ + fn from(face: crate::draw_flags::PolygonModeFace) -> Self + { + match face { + crate::draw_flags::PolygonModeFace::Front => Self::Front, + crate::draw_flags::PolygonModeFace::Back => Self::Back, + crate::draw_flags::PolygonModeFace::FrontAndBack => Self::FrontAndBack, + } + } +} -- cgit v1.2.3-18-g5258