summaryrefslogtreecommitdiff
path: root/engine/src
diff options
context:
space:
mode:
Diffstat (limited to 'engine/src')
-rw-r--r--engine/src/renderer.rs9
-rw-r--r--engine/src/renderer/opengl.rs27
2 files changed, 13 insertions, 23 deletions
diff --git a/engine/src/renderer.rs b/engine/src/renderer.rs
index 6ef1535..970a241 100644
--- a/engine/src/renderer.rs
+++ b/engine/src/renderer.rs
@@ -67,7 +67,9 @@ builder! {
#[builder(name=ExtensionBuilder, derives=(Debug, Clone, Default))]
#[derive(Debug, Clone)]
#[non_exhaustive]
-pub struct Extension {}
+pub struct Extension {
+ pub graphics_props: GraphicsProperties,
+}
}
impl Extension
@@ -88,6 +90,8 @@ impl ecs::extension::Extension for Extension
let _ = collector.add_sole(RenderPasses::default());
+ let _ = collector.add_sole(self.graphics_props);
+
collector.add_system(*PRE_RENDER_PHASE, main_render_pass::add_main_render_passes);
collector.add_system(*RENDER_PHASE, enqueue_commands_from_render_passes);
@@ -107,9 +111,8 @@ impl Default for Extension
}
builder! {
-/// Window graphics properties.
#[builder(name=GraphicsPropertiesBuilder, derives=(Debug, Clone))]
-#[derive(Debug, Clone, Component)]
+#[derive(Debug, Clone, Sole)]
#[non_exhaustive]
pub struct GraphicsProperties
{
diff --git a/engine/src/renderer/opengl.rs b/engine/src/renderer/opengl.rs
index 4e865fb..d744da4 100644
--- a/engine/src/renderer/opengl.rs
+++ b/engine/src/renderer/opengl.rs
@@ -218,11 +218,7 @@ struct SetupFailed;
fn prepare_windows(
window_query: Query<
- (
- Option<&Window>,
- &mut WindowCreationAttributes,
- Option<&GraphicsProperties>,
- ),
+ (Option<&Window>, &mut WindowCreationAttributes),
(
Without<CreationReady>,
Without<WindowGlConfig>,
@@ -231,6 +227,7 @@ fn prepare_windows(
),
>,
windowing_context: Single<WindowingContext>,
+ graphics_props: Single<GraphicsProperties>,
mut actions: Actions,
)
{
@@ -238,7 +235,7 @@ fn prepare_windows(
return;
};
- for (window_ent_id, (window, mut window_creation_attrs, graphics_props)) in
+ for (window_ent_id, (window, mut window_creation_attrs)) in
window_query.iter_with_euids()
{
tracing::debug!("Preparing window entity {window_ent_id} for use in rendering");
@@ -246,15 +243,6 @@ fn prepare_windows(
let mut glutin_config_template_builder =
glutin::config::ConfigTemplateBuilder::new();
- let graphics_props = match graphics_props.as_ref() {
- Some(graphics_props) => &*graphics_props,
- None => {
- actions.add_components(window_ent_id, (GraphicsProperties::default(),));
-
- &GraphicsProperties::default()
- }
- };
-
if let Some(multisampling_sample_cnt) = graphics_props.multisampling_sample_cnt {
glutin_config_template_builder = glutin_config_template_builder
.with_multisampling(multisampling_sample_cnt);
@@ -311,16 +299,15 @@ fn prepare_windows(
#[tracing::instrument(skip_all)]
fn init_window_graphics(
window_query: Query<
- (&Window, &WindowGlConfig, &GraphicsProperties),
+ (&Window, &WindowGlConfig),
(Without<SurfaceSpec>, Without<SetupFailed>),
>,
- mut actions: Actions,
windowing_context: Single<WindowingContext>,
+ graphics_props: Single<GraphicsProperties>,
+ mut actions: Actions,
)
{
- for (window_ent_id, (window, window_gl_config, graphics_props)) in
- window_query.iter_with_euids()
- {
+ for (window_ent_id, (window, window_gl_config)) in window_query.iter_with_euids() {
tracing::info!("Initializing graphics for window {window_ent_id}");
let display = window_gl_config.gl_config.display();