Add setting to try OpenGL ES first
This commit is contained in:
parent
46fb27b104
commit
230db88fb2
3 changed files with 34 additions and 4 deletions
|
|
@ -61,11 +61,23 @@ where
|
||||||
settings.id,
|
settings.id,
|
||||||
);
|
);
|
||||||
|
|
||||||
let context = ContextBuilder::new()
|
let opengl_builder = ContextBuilder::new()
|
||||||
.with_vsync(true)
|
.with_vsync(true)
|
||||||
// .with_gl(glutin::GlRequest::Specific(glutin::Api::OpenGlEs, (2, 0)))
|
.with_multisampling(C::sample_count(&compositor_settings) as u16);
|
||||||
.with_multisampling(C::sample_count(&compositor_settings) as u16)
|
|
||||||
.build_windowed(builder, &event_loop)
|
let opengles_builder = opengl_builder.clone().with_gl(
|
||||||
|
glutin::GlRequest::Specific(glutin::Api::OpenGlEs, (2, 0)),
|
||||||
|
);
|
||||||
|
|
||||||
|
let (first_builder, second_builder) = if settings.try_opengles_first {
|
||||||
|
(opengles_builder, opengl_builder)
|
||||||
|
} else {
|
||||||
|
(opengl_builder, opengles_builder)
|
||||||
|
};
|
||||||
|
|
||||||
|
let context = first_builder
|
||||||
|
.build_windowed(builder.clone(), &event_loop)
|
||||||
|
.or_else(|_| second_builder.build_windowed(builder, &event_loop))
|
||||||
.map_err(|error| {
|
.map_err(|error| {
|
||||||
use glutin::CreationError;
|
use glutin::CreationError;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,15 @@ pub struct Settings<Flags> {
|
||||||
///
|
///
|
||||||
/// [`Application`]: crate::Application
|
/// [`Application`]: crate::Application
|
||||||
pub exit_on_close_request: bool,
|
pub exit_on_close_request: bool,
|
||||||
|
|
||||||
|
/// Whether the [`Application`] should try to build the context
|
||||||
|
/// using OpenGL ES first then OpenGL.
|
||||||
|
///
|
||||||
|
/// By default, it is disabled.
|
||||||
|
/// **Note:** Only works for the `glow` backend.
|
||||||
|
///
|
||||||
|
/// [`Application`]: crate::Application
|
||||||
|
pub try_opengles_first: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<Flags> Settings<Flags> {
|
impl<Flags> Settings<Flags> {
|
||||||
|
|
@ -73,6 +82,7 @@ impl<Flags> Settings<Flags> {
|
||||||
text_multithreading: default_settings.text_multithreading,
|
text_multithreading: default_settings.text_multithreading,
|
||||||
antialiasing: default_settings.antialiasing,
|
antialiasing: default_settings.antialiasing,
|
||||||
exit_on_close_request: default_settings.exit_on_close_request,
|
exit_on_close_request: default_settings.exit_on_close_request,
|
||||||
|
try_opengles_first: default_settings.try_opengles_first,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -91,6 +101,7 @@ where
|
||||||
text_multithreading: false,
|
text_multithreading: false,
|
||||||
antialiasing: false,
|
antialiasing: false,
|
||||||
exit_on_close_request: true,
|
exit_on_close_request: true,
|
||||||
|
try_opengles_first: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -103,6 +114,7 @@ impl<Flags> From<Settings<Flags>> for iced_winit::Settings<Flags> {
|
||||||
window: settings.window.into(),
|
window: settings.window.into(),
|
||||||
flags: settings.flags,
|
flags: settings.flags,
|
||||||
exit_on_close_request: settings.exit_on_close_request,
|
exit_on_close_request: settings.exit_on_close_request,
|
||||||
|
try_opengles_first: settings.try_opengles_first,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,12 @@ pub struct Settings<Flags> {
|
||||||
/// Whether the [`Application`] should exit when the user requests the
|
/// Whether the [`Application`] should exit when the user requests the
|
||||||
/// window to close (e.g. the user presses the close button).
|
/// window to close (e.g. the user presses the close button).
|
||||||
pub exit_on_close_request: bool,
|
pub exit_on_close_request: bool,
|
||||||
|
|
||||||
|
/// Whether the [`Application`] should try to build the context
|
||||||
|
/// using OpenGL ES first then OpenGL.
|
||||||
|
///
|
||||||
|
/// NOTE: Only works for the `glow` backend.
|
||||||
|
pub try_opengles_first: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The window settings of an application.
|
/// The window settings of an application.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue