update graphics to wgpu 29.0.0
This commit is contained in:
@@ -19,6 +19,12 @@ impl From<ToSurfaceTarget> for wgpu::SurfaceTarget<'static>{
|
||||
}
|
||||
}
|
||||
|
||||
// select limits based on presence of webgl feature
|
||||
#[cfg(not(feature="webgl"))]
|
||||
const LIMITS:wgpu::Limits=wgpu::Limits::defaults();
|
||||
#[cfg(feature="webgl")]
|
||||
const LIMITS:wgpu::Limits=wgpu::Limits::downlevel_webgl2_defaults();
|
||||
|
||||
#[wasm_bindgen]
|
||||
pub struct Graphics{
|
||||
graphics:graphics::Graphics,
|
||||
@@ -30,18 +36,18 @@ pub struct Graphics{
|
||||
pub async fn setup_graphics(canvas:web_sys::HtmlCanvasElement)->Result<Graphics,JsError>{
|
||||
let size=glam::uvec2(canvas.width(),canvas.height());
|
||||
|
||||
let instance_desc=wgpu::InstanceDescriptor::from_env_or_default();
|
||||
let instance=wgpu::util::new_instance_with_webgpu_detection(&instance_desc).await;
|
||||
let instance_desc=wgpu::InstanceDescriptor::new_without_display_handle_from_env();
|
||||
let instance=wgpu::util::new_instance_with_webgpu_detection(instance_desc).await;
|
||||
let surface=setup::step2::create_surface(&instance,ToSurfaceTarget(canvas)).map_err(|e|JsError::new(&e.to_string()))?;
|
||||
let adapter=instance.request_adapter(&wgpu::RequestAdapterOptions{
|
||||
power_preference:wgpu::PowerPreference::HighPerformance,
|
||||
force_fallback_adapter:false,
|
||||
compatible_surface:Some(&surface),
|
||||
}).await.map_err(|e|JsError::new(&e.to_string()))?;
|
||||
let (device,queue)=setup::step4::request_device(&adapter).await.map_err(|e|JsError::new(&e.to_string()))?;
|
||||
let (device,queue)=setup::step4::request_device(&adapter,LIMITS).await.map_err(|e|JsError::new(&e.to_string()))?;
|
||||
let surface=setup::step5::configure_surface(&adapter,&device,surface,(size.x,size.y)).map_err(|e|JsError::new(&e.to_string()))?;
|
||||
Ok(Graphics{
|
||||
graphics:graphics::Graphics::new(&device,&queue,size,surface.view_format()),
|
||||
graphics:graphics::Graphics::new(&device,&queue,size,surface.view_format(),LIMITS),
|
||||
surface,
|
||||
device,
|
||||
queue,
|
||||
@@ -53,7 +59,7 @@ impl Graphics{
|
||||
pub fn render(&mut self,bot:&CompleteBot,head:&PlaybackHead,time:f64){
|
||||
let time=time::from_float(time).unwrap();
|
||||
let (pos,angles)=head.head.get_position_angles(&bot.bot,time);
|
||||
let frame=self.surface.new_frame(&self.device);
|
||||
let frame=self.surface.new_frame(&self.device).expect("Error creating new frame");
|
||||
let mut encoder=self.device.create_command_encoder(&wgpu::CommandEncoderDescriptor{label:None});
|
||||
self.graphics.encode_commands(&mut encoder,frame.view(),pos,angles);
|
||||
self.queue.submit([encoder.finish()]);
|
||||
|
||||
Reference in New Issue
Block a user