1
0
mirror of https://github.com/emilk/egui.git synced 2026-09-01 22:30:03 -04:00

Disable custom 3D painting example in the egui demo app for Es100 (#1945)

Closes https://github.com/emilk/egui/issues/1944
This commit is contained in:
Emil Ernerfeldt
2022-08-20 19:54:18 +02:00
committed by GitHub
parent 97ce103209
commit bd5250f85d
9 changed files with 68 additions and 36 deletions

View File

@@ -11,13 +11,12 @@ pub struct Custom3d {
}
impl Custom3d {
pub fn new<'a>(cc: &'a eframe::CreationContext<'a>) -> Self {
Self {
rotating_triangle: Arc::new(Mutex::new(RotatingTriangle::new(
cc.gl.as_ref().expect("GL Enabled"),
))),
pub fn new<'a>(cc: &'a eframe::CreationContext<'a>) -> Option<Self> {
let gl = cc.gl.as_ref()?;
Some(Self {
rotating_triangle: Arc::new(Mutex::new(RotatingTriangle::new(gl)?)),
angle: 0.0,
}
})
}
}
@@ -81,18 +80,22 @@ struct RotatingTriangle {
#[allow(unsafe_code)] // we need unsafe code to use glow
impl RotatingTriangle {
fn new(gl: &glow::Context) -> Self {
fn new(gl: &glow::Context) -> Option<Self> {
use glow::HasContext as _;
let shader_version = if cfg!(target_arch = "wasm32") {
"#version 300 es"
} else {
"#version 330"
};
let shader_version = egui_glow::ShaderVersion::get(gl);
unsafe {
let program = gl.create_program().expect("Cannot create program");
if !shader_version.is_new_shader_interface() {
tracing::warn!(
"Custom 3D painting hasn't been ported to {:?}",
shader_version
);
return None;
}
let (vertex_shader_source, fragment_shader_source) = (
r#"
const vec2 verts[3] = vec2[3](
@@ -134,10 +137,20 @@ impl RotatingTriangle {
let shader = gl
.create_shader(*shader_type)
.expect("Cannot create shader");
gl.shader_source(shader, &format!("{}\n{}", shader_version, shader_source));
gl.shader_source(
shader,
&format!(
"{}\n{}",
shader_version.version_declaration(),
shader_source
),
);
gl.compile_shader(shader);
if !gl.get_shader_compile_status(shader) {
panic!("{}", gl.get_shader_info_log(shader));
panic!(
"Failed to compile custom_3d_glow: {}",
gl.get_shader_info_log(shader)
);
}
gl.attach_shader(program, shader);
shader
@@ -158,10 +171,10 @@ impl RotatingTriangle {
.create_vertex_array()
.expect("Cannot create vertex array");
Self {
Some(Self {
program,
vertex_array,
}
})
}
}

View File

@@ -10,10 +10,10 @@ pub struct Custom3d {
}
impl Custom3d {
pub fn new<'a>(cc: &'a eframe::CreationContext<'a>) -> Self {
pub fn new<'a>(cc: &'a eframe::CreationContext<'a>) -> Option<Self> {
// Get the WGPU render state from the eframe creation context. This can also be retrieved
// from `eframe::Frame` when you don't have a `CreationContext` available.
let wgpu_render_state = cc.wgpu_render_state.as_ref().expect("WGPU enabled");
let wgpu_render_state = cc.wgpu_render_state.as_ref()?;
let device = &wgpu_render_state.device;
@@ -91,7 +91,7 @@ impl Custom3d {
uniform_buffer,
});
Self { angle: 0.0 }
Some(Self { angle: 0.0 })
}
}