mirror of
https://github.com/emilk/egui.git
synced 2026-09-02 14:50: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:
@@ -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,
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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 })
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user