nice call

This commit is contained in:
shenjack 2025-01-23 01:08:34 +08:00
parent 527b0eec9a
commit 479b19d182
Signed by: shenjack
GPG Key ID: 7B1134A979775551
2 changed files with 41 additions and 21 deletions

View File

@ -77,26 +77,44 @@ impl WgpuContext {
self.surface.configure(&self.device, &self.config);
}
fn inner_on_draw(&mut self) -> anyhow::Result<()> {
let output = self.surface.get_current_texture()?;
let view = output.texture.create_view(&wgpu::TextureViewDescriptor::default());
let mut encoder = self.device.create_command_encoder(&wgpu::CommandEncoderDescriptor {
label: Some("Render Encoder"),
});
{
let _render_pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor {
label: Some("Render Pass"),
color_attachments: &[Some(wgpu::RenderPassColorAttachment {
view: &view,
resolve_target: None,
ops: wgpu::Operations {
load: wgpu::LoadOp::Clear(wgpu::Color {
r: 0.1,
g: 0.2,
b: 0.3,
a: 1.0,
}),
store: wgpu::StoreOp::Store,
},
})],
..Default::default()
});
}
self.queue.submit(std::iter::once(encoder.finish()));
output.present();
Ok(())
}
pub fn on_draw(&mut self) {
// 步骤5: 渲染
// let frame = self.surface.get_current_frame().expect("Failed to acquire next swap chain texture").output;
// let mut encoder = self.device.create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None });
// {
// let _render_pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor {
// color_attachments: &[
// wgpu::RenderPassColorAttachment {
// view: &frame.view,
// resolve_target: None,
// ops: wgpu::Operations {
// load: wgpu::LoadOp::Clear(wgpu::Color::BLACK),
// store: true,
// }
// }
// ],
// depth_stencil_attachment: None,
// });
// }
// self.queue.submit(std::iter::once(encoder.finish()));
match self.inner_on_draw() {
Ok(_) => {}
Err(e) => {
println!("Failed to draw: {:?}", e);
}
}
}
}

View File

@ -76,13 +76,13 @@ class Menu(BaseScreen):
def render_hacks(x, y):
from .Difficult_Rocket_rs import render_hack
if self.hacks is not None:
logger.info("render_hack 已经做过了", tag="dr_game_hacks")
return
render = render_hack()
if render is not None:
render.on_resize(main_window.width, main_window.height)
self.hacks = render
logger.info("render_hack_init", tag="dr_game_hacks")
logger.info("render_hack_inited", tag="dr_game_hacks")
self.enter_ship_editor_button.set_handler("on_release", on_release)
self.magic_rust_test_button.set_handler("on_release", render_hacks)
@ -91,3 +91,5 @@ class Menu(BaseScreen):
def on_draw(self, window: ClientWindow):
self.main_batch.draw()
if self.hacks is not None:
self.hacks.on_draw()