in native/desktop-linux-sample/src/sample_linux.rs [219:240]
fn draw_opengl_triangle_with_init(physical_size: PhysicalSize, window_id: WindowId, window_state: &mut WindowState) {
let opengl_state = window_state.opengl.get_or_insert_with(|| {
let egl_lib = application_get_egl_proc_func();
let funcs = OpenGlFuncs::new(&egl_lib).unwrap();
let program = create_opengl_program(&funcs).unwrap();
debug!("draw_opengl_triangle_with_init, program = {program}");
let mut programs = HashMap::new();
programs.insert(window_id, program);
OpenglState { funcs, programs }
});
let program = opengl_state
.programs
.entry(window_id)
.or_insert_with(|| create_opengl_program(&opengl_state.funcs).unwrap());
let animation_progress = if window_state.animation_progress < 100. {
-1.0 + (window_state.animation_progress / 50.)
} else {
1.0 - ((window_state.animation_progress - 100.) / 50.)
};
draw_opengl_triangle(&opengl_state.funcs, *program, physical_size, animation_progress);
}