This commit is contained in:
2026-03-09 07:50:14 -07:00
parent 9cb5861787
commit f30f566bac

View File

@@ -1,21 +1,69 @@
use strafesnet_graphics::setup;
use std::io::Write;
pub async fn setup_and_start(){
println!("Initializing the surface...");
let vulkan_instance = vk_video::VulkanInstance::new().unwrap();
let vulkan_adapter = vulkan_instance.create_adapter(None).unwrap();
let vulkan_device = vulkan_adapter
.create_device(
wgpu::Features::IMMEDIATES,
wgpu::ExperimentalFeatures::disabled(),
wgpu::Limits {
max_immediate_size: 4,
..Default::default()
},
)
.unwrap();
let instance=setup::step1::create_instance();
let width = core::num::NonZeroU32::new(1920).unwrap();
let height = core::num::NonZeroU32::new(1080).unwrap();
let target_framerate = 60.into();
let average_bitrate = 500_000;
let max_bitrate = 2_000_000;
let surface=setup::step2::create_surface(&instance,&window).unwrap();
let wgpu_state = WgpuState::new(
vulkan_device.wgpu_device(),
vulkan_device.wgpu_queue(),
width,
height,
);
let adapter=setup::step3::pick_adapter(&instance,&surface).await.expect("No suitable GPU adapters found on the system!");
let mut encoder = vulkan_device
.create_wgpu_textures_encoder(
vulkan_device
.encoder_parameters_high_quality(
vk_video::parameters::VideoParameters {
width,
height,
target_framerate,
},
vk_video::parameters::RateControl::VariableBitrate {
average_bitrate,
max_bitrate,
virtual_buffer_size: std::time::Duration::from_secs(2),
},
)
.unwrap(),
)
.unwrap();
let (device,queue)=setup::step4::request_device(&adapter).await.unwrap();
let mut output_file = std::fs::File::create("output.h264").unwrap();
let size=window.inner_size();
let config=setup::step5::configure_surface(&adapter,&device,&surface,(size.width,size.height)).unwrap();
for i in 0..frame_count {
let time = 1.0 / 30.0 * i as f32;
wgpu_state.render(time);
// load files
let res = unsafe {
encoder
.encode(
vk_video::Frame {
data: wgpu_state.texture.clone(),
pts: None,
},
false,
)
.unwrap()
};
println!("Entering event loop...");
// render frames here...
output_file.write_all(&res.data).unwrap();
}
}