1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
use super::{BeginMode, DataType, WebGlRenderer}; use crate::errors::Error; use web_sys::{WebGl2RenderingContext, WebGlRenderingContext}; impl WebGlRenderer<WebGlRenderingContext> { pub fn vertex_attrib_divisor(&self, loc: u32, divisor: u32) -> Result<(), Error> { let ext = self.get_extension_instanced_arrays()?; ext.vertex_attrib_divisor_angle(loc, divisor); Ok(()) } pub fn draw_arrays_instanced( &self, mode: BeginMode, first: u32, count: u32, primcount: u32, ) -> Result<(), Error> { let ext = self.get_extension_instanced_arrays()?; ext.draw_arrays_instanced_angle(mode as u32, first as i32, count as i32, primcount as i32); Ok(()) } pub fn draw_elements_instanced( &self, mode: BeginMode, count: u32, data_type: DataType, offset: u32, primcount: u32, ) -> Result<(), Error> { let ext = self.get_extension_instanced_arrays()?; ext.draw_elements_instanced_angle_with_i32( mode as u32, count as i32, data_type as u32, offset as i32, primcount as i32, ); Ok(()) } } impl WebGlRenderer<WebGl2RenderingContext> { pub fn vertex_attrib_divisor(&self, loc: u32, divisor: u32) -> Result<(), Error> { self.gl.vertex_attrib_divisor(loc, divisor); Ok(()) } pub fn draw_arrays_instanced( &self, mode: BeginMode, first: u32, count: u32, primcount: u32, ) -> Result<(), Error> { self.gl .draw_arrays_instanced(mode as u32, first as i32, count as i32, primcount as i32); Ok(()) } pub fn draw_elements_instanced( &self, mode: BeginMode, count: u32, data_type: DataType, offset: u32, primcount: u32, ) -> Result<(), Error> { self.gl.draw_elements_instanced_with_i32( mode as u32, count as i32, data_type as u32, offset as i32, primcount as i32, ); Ok(()) } }