pub struct RenderApp { /* private fields */ }Expand description
渲染应用
实现 ApplicationHandler trait,管理窗口生命周期和渲染循环。 使用 winit 0.30 API 设计,提供跨平台兼容性。
§设计理念
- 延迟初始化: 在
resumed事件中创建窗口和渲染上下文 - 事件驱动: 响应窗口事件和设备事件
- ECS 集成: 持有 App 并每帧调用 update()
§示例
use anvilkit_render::window::{RenderApp, WindowConfig};
use anvilkit_render::prelude::*;
use winit::event_loop::EventLoop;
let mut app = App::new();
app.add_plugins(RenderPlugin::default());
RenderApp::run(app);Implementations§
Source§impl RenderApp
impl RenderApp
Sourcepub fn new(config: WindowConfig) -> Self
pub fn new(config: WindowConfig) -> Self
Sourcepub fn run(app: App)
pub fn run(app: App)
ECS 驱动的入口点
创建 EventLoop、窗口,运行 winit 主循环。
每帧调用 app.update() 然后执行 GPU 渲染。
§参数
app: 已配置好 RenderPlugin 和系统的 ECS App
Sourcepub fn config(&self) -> &WindowConfig
pub fn config(&self) -> &WindowConfig
获取窗口配置
Sourcepub fn window_state(&self) -> &WindowState
pub fn window_state(&self) -> &WindowState
获取窗口状态
Sourcepub fn request_exit(&mut self)
pub fn request_exit(&mut self)
请求退出应用
Sourcepub fn is_exit_requested(&self) -> bool
pub fn is_exit_requested(&self) -> bool
检查是否请求退出
Sourcepub fn render_device(&self) -> Option<&RenderDevice>
pub fn render_device(&self) -> Option<&RenderDevice>
获取渲染设备(初始化后可用)
Sourcepub fn surface_format(&self) -> Option<TextureFormat>
pub fn surface_format(&self) -> Option<TextureFormat>
获取渲染表面格式(初始化后可用)
Sourcepub fn get_current_frame(&self) -> Option<SurfaceTexture>
pub fn get_current_frame(&self) -> Option<SurfaceTexture>
获取当前帧的 SurfaceTexture(用于外部渲染)
Trait Implementations§
Source§impl ApplicationHandler for RenderApp
impl ApplicationHandler for RenderApp
Source§fn resumed(&mut self, event_loop: &ActiveEventLoop)
fn resumed(&mut self, event_loop: &ActiveEventLoop)
应用恢复事件
Source§fn window_event(
&mut self,
event_loop: &ActiveEventLoop,
_window_id: WindowId,
event: WindowEvent,
)
fn window_event( &mut self, event_loop: &ActiveEventLoop, _window_id: WindowId, event: WindowEvent, )
窗口事件处理
Source§fn device_event(
&mut self,
_event_loop: &ActiveEventLoop,
_device_id: DeviceId,
_event: DeviceEvent,
)
fn device_event( &mut self, _event_loop: &ActiveEventLoop, _device_id: DeviceId, _event: DeviceEvent, )
设备事件处理
Source§fn about_to_wait(&mut self, _event_loop: &ActiveEventLoop)
fn about_to_wait(&mut self, _event_loop: &ActiveEventLoop)
即将等待事件
Source§fn new_events(&mut self, event_loop: &ActiveEventLoop, cause: StartCause)
fn new_events(&mut self, event_loop: &ActiveEventLoop, cause: StartCause)
Emitted when new events arrive from the OS to be processed. Read more
Source§fn user_event(&mut self, event_loop: &ActiveEventLoop, event: T)
fn user_event(&mut self, event_loop: &ActiveEventLoop, event: T)
Emitted when an event is sent from
EventLoopProxy::send_event.Source§fn suspended(&mut self, event_loop: &ActiveEventLoop)
fn suspended(&mut self, event_loop: &ActiveEventLoop)
Emitted when the application has been suspended. Read more
Source§fn exiting(&mut self, event_loop: &ActiveEventLoop)
fn exiting(&mut self, event_loop: &ActiveEventLoop)
Emitted when the event loop is being shut down. Read more
Source§fn memory_warning(&mut self, event_loop: &ActiveEventLoop)
fn memory_warning(&mut self, event_loop: &ActiveEventLoop)
Emitted when the application has received a memory warning. Read more
Auto Trait Implementations§
impl !Freeze for RenderApp
impl !RefUnwindSafe for RenderApp
impl Send for RenderApp
impl Sync for RenderApp
impl Unpin for RenderApp
impl UnsafeUnpin for RenderApp
impl !UnwindSafe for RenderApp
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.