summaryrefslogtreecommitdiff
path: root/engine/src/rendering/backend/opengl.rs
diff options
context:
space:
mode:
Diffstat (limited to 'engine/src/rendering/backend/opengl.rs')
-rw-r--r--engine/src/rendering/backend/opengl.rs39
1 files changed, 32 insertions, 7 deletions
diff --git a/engine/src/rendering/backend/opengl.rs b/engine/src/rendering/backend/opengl.rs
index 41d6968..c545ccc 100644
--- a/engine/src/rendering/backend/opengl.rs
+++ b/engine/src/rendering/backend/opengl.rs
@@ -196,10 +196,13 @@ fn prepare_windows(
windowing_context: Single<WindowingContext>,
graphics_props: Single<GraphicsProperties>,
mut actions: Actions,
-)
+) -> Result<(), crate::Error>
{
+ let windowing_context = windowing_context.get()?;
+ let graphics_props = graphics_props.get()?;
+
let Some(display_handle) = windowing_context.display_handle() else {
- return;
+ return Ok(());
};
for (window_ent_id, (window, mut window_creation_attrs)) in
@@ -259,6 +262,8 @@ fn prepare_windows(
actions.add_components(window_ent_id, (CreationReady,));
}
}
+
+ Ok(())
}
#[tracing::instrument(skip_all)]
@@ -271,8 +276,15 @@ fn init_window_graphics(
graphics_props: Single<GraphicsProperties>,
mut graphics_ctx: Single<GraphicsContext>,
mut actions: Actions,
-)
+) -> Result<(), crate::Error>
{
+ let Ok(graphics_ctx) = graphics_ctx.get_mut() else {
+ unreachable!();
+ };
+
+ let windowing_context = windowing_context.get()?;
+ let graphics_props = graphics_props.get()?;
+
for (window_ent_id, (window, window_gl_config)) in window_query.iter_with_euids() {
tracing::info!(
window_entity_id=%window_ent_id,
@@ -409,6 +421,8 @@ fn init_window_graphics(
},
);
}
+
+ Ok(())
}
#[tracing::instrument(skip_all)]
@@ -418,8 +432,17 @@ fn handle_commands(
mut command_queue: Single<CommandQueue>,
assets: Single<Assets>,
shader_context: Single<ShaderContext>,
-)
+) -> Result<(), crate::Error>
{
+ let Ok(graphics_ctx) = graphics_ctx.get_mut() else {
+ unreachable!();
+ };
+
+ let object_store = object_store.get_mut()?;
+ let command_queue = command_queue.get_mut()?;
+ let assets = assets.get()?;
+ let shader_context = shader_context.get()?;
+
let GraphicsContext {
ref gl_context,
ref mut surfaces,
@@ -429,7 +452,7 @@ fn handle_commands(
} = *graphics_ctx;
let Some(gl_context) = gl_context else {
- return;
+ return Ok(());
};
let mut activated_gl_shader_program: Option<(ObjectId, GlShaderProgram)> = None;
@@ -676,8 +699,8 @@ fn handle_commands(
Command::CreateTexture(texture_asset) => {
if let Err(err) = create_texture_object(
gl_context,
- &mut object_store,
- &assets,
+ object_store,
+ assets,
&texture_asset,
) {
tracing::error!("Failed to create texture object: {err}");
@@ -1015,6 +1038,8 @@ fn handle_commands(
}
}
}
+
+ Ok(())
}
fn create_gl_context(