Skip to main content

create_native

Function create_native 

Source
pub fn create_native<'a>(
    app_name: &str,
    native_options: NativeOptions,
    app_creator: AppCreator<'a>,
    event_loop: &EventLoop<UserEvent>,
) -> EframeWinitApplication<'a>
Expand description

Provides a proxy for your native eframe application to run on your own event loop.

See run_native for details about app_name.

Call from fn main like this:

use eframe::{egui, UserEvent};
use winit::event_loop::{ControlFlow, EventLoop};

fn main() -> eframe::Result {
    let native_options = eframe::NativeOptions::default();
    let eventloop = EventLoop::<UserEvent>::with_user_event().build()?;
    eventloop.set_control_flow(ControlFlow::Poll);

    let mut winit_app = eframe::create_native(
        "MyExtApp",
        native_options,
        Box::new(|cc| Ok(Box::new(MyEguiApp::new(cc)))),
        &eventloop,
    );

    eventloop.run_app(&mut winit_app)?;

    Ok(())
}

#[derive(Default)]
struct MyEguiApp {}

impl MyEguiApp {
    fn new(cc: &eframe::CreationContext<'_>) -> Self {
        Self::default()
    }
}

impl eframe::App for MyEguiApp {
   fn ui(&mut self, ui: &mut egui::Ui, frame: &mut eframe::Frame) {
       egui::CentralPanel::default().show_inside(ui, |ui| {
           ui.heading("Hello World!");
       });
   }
}

See the external_eventloop example for a more complete example.