diff options
| author | HampusM <hampus@hampusmat.com> | 2026-07-17 03:06:04 +0200 |
|---|---|---|
| committer | HampusM <hampus@hampusmat.com> | 2026-07-17 03:06:04 +0200 |
| commit | 65e24308babb2ed4f33fb6f1d7b531df676bd70d (patch) | |
| tree | df9477d4b805cc6866a086833d6118505804dd3a /engine/src/rendering/backend | |
| parent | 649d4d4ab2f54ca12f75d2cba50e1adef2350dbe (diff) | |
refactor(engine): change Color struct into a enum
Diffstat (limited to 'engine/src/rendering/backend')
| -rw-r--r-- | engine/src/rendering/backend/opengl.rs | 49 |
1 files changed, 29 insertions, 20 deletions
diff --git a/engine/src/rendering/backend/opengl.rs b/engine/src/rendering/backend/opengl.rs index 95aef27..bab916a 100644 --- a/engine/src/rendering/backend/opengl.rs +++ b/engine/src/rendering/backend/opengl.rs @@ -66,9 +66,10 @@ use opengl_bindings::{ }; use raw_window_handle::WindowHandle; use safer_ffi::layout::ReprC; -use zerocopy::{Immutable, IntoBytes}; +use zerocopy::IntoBytes; use crate::asset::Assets; +use crate::data_types::color::Color; use crate::data_types::dimens::Dimens; use crate::ecs::actions::Actions; use crate::ecs::query::term::Without; @@ -676,6 +677,7 @@ fn handle_commands( ); let fvec3_value; + let mut color_value = [0.0; 4]; uniform_buffer .store_at_byte_offset( @@ -686,10 +688,34 @@ fn handle_commands( ShaderBindingValue::Int(ref value) => value.as_bytes(), ShaderBindingValue::Float(ref value) => value.as_bytes(), ShaderBindingValue::FVec3(value) => { - fvec3_value = CF32Vec3::from(value); - + fvec3_value = [value.x, value.y, value.z]; fvec3_value.as_bytes() } + ShaderBindingValue::Color(value) => match value { + Color::Rgb(value) => { + color_value[..3] + .copy_from_slice(&[value.r, value.g, value.b]); + + color_value[..3].as_bytes() + } + Color::Rgba(value) => { + color_value[..4].copy_from_slice(&[ + value.r, value.g, value.b, value.a, + ]); + + color_value[..4].as_bytes() + } + Color::Luma(ref value) => { + color_value[0] = value.l; + + color_value[0].as_bytes() + } + Color::LumaA(value) => { + color_value[..2].copy_from_slice(&[value.l, value.a]); + + color_value[..2].as_bytes() + } + }, ShaderBindingValue::FMat4x4(ref value) => { value.items().as_bytes() } @@ -1503,23 +1529,6 @@ impl From<crate::draw_flags::PolygonModeFace> for opengl_bindings::misc::Polygon } } -#[derive(Debug, IntoBytes, Immutable)] -#[repr(C)] -pub struct CF32Vec3 -{ - x: f32, - y: f32, - z: f32, -} - -impl From<Vec3<f32>> for CF32Vec3 -{ - fn from(src: Vec3<f32>) -> Self - { - Self { x: src.x, y: src.y, z: src.z } - } -} - fn blending_factor_to_gl(blending_factor: BlendingFactor) -> GlBlendingFactor { match blending_factor { |
