Trait Device

Source
pub trait Device: Sized {
    type Buffer;
    type Framebuffer;
    type Program;
    type Shader;
    type Texture;
    type TextureDataReceiver;
    type TimerQuery;
    type Uniform;
    type VertexArray;
    type VertexAttr;

Show 35 methods // Required methods fn create_texture( &self, format: TextureFormat, size: Vector2I, ) -> Self::Texture; fn create_texture_from_data( &self, format: TextureFormat, size: Vector2I, data: TextureDataRef<'_>, ) -> Self::Texture; fn create_shader( &self, resources: &dyn ResourceLoader, name: &str, kind: ShaderKind, ) -> Self::Shader; fn create_shader_from_source( &self, name: &str, source: &[u8], kind: ShaderKind, ) -> Self::Shader; fn create_vertex_array(&self) -> Self::VertexArray; fn create_program_from_shaders( &self, resources: &dyn ResourceLoader, name: &str, vertex_shader: Self::Shader, fragment_shader: Self::Shader, ) -> Self::Program; fn get_vertex_attr( &self, program: &Self::Program, name: &str, ) -> Option<Self::VertexAttr>; fn get_uniform(&self, program: &Self::Program, name: &str) -> Self::Uniform; fn bind_buffer( &self, vertex_array: &Self::VertexArray, buffer: &Self::Buffer, target: BufferTarget, ); fn configure_vertex_attr( &self, vertex_array: &Self::VertexArray, attr: &Self::VertexAttr, descriptor: &VertexAttrDescriptor, ); fn create_framebuffer(&self, texture: Self::Texture) -> Self::Framebuffer; fn create_buffer(&self) -> Self::Buffer; fn allocate_buffer<T>( &self, buffer: &Self::Buffer, data: BufferData<'_, T>, target: BufferTarget, mode: BufferUploadMode, ); fn framebuffer_texture<'f>( &self, framebuffer: &'f Self::Framebuffer, ) -> &'f Self::Texture; fn destroy_framebuffer( &self, framebuffer: Self::Framebuffer, ) -> Self::Texture; fn texture_format(&self, texture: &Self::Texture) -> TextureFormat; fn texture_size(&self, texture: &Self::Texture) -> Vector2I; fn set_texture_sampling_mode( &self, texture: &Self::Texture, flags: TextureSamplingFlags, ); fn upload_to_texture( &self, texture: &Self::Texture, rect: RectI, data: TextureDataRef<'_>, ); fn read_pixels( &self, target: &RenderTarget<'_, Self>, viewport: RectI, ) -> Self::TextureDataReceiver; fn begin_commands(&self); fn end_commands(&self); fn draw_arrays( &self, index_count: u32, render_state: &RenderState<'_, Self>, ); fn draw_elements( &self, index_count: u32, render_state: &RenderState<'_, Self>, ); fn draw_elements_instanced( &self, index_count: u32, instance_count: u32, render_state: &RenderState<'_, Self>, ); fn create_timer_query(&self) -> Self::TimerQuery; fn begin_timer_query(&self, query: &Self::TimerQuery); fn end_timer_query(&self, query: &Self::TimerQuery); fn try_recv_timer_query(&self, query: &Self::TimerQuery) -> Option<Duration>; fn recv_timer_query(&self, query: &Self::TimerQuery) -> Duration; fn try_recv_texture_data( &self, receiver: &Self::TextureDataReceiver, ) -> Option<TextureData>; fn recv_texture_data( &self, receiver: &Self::TextureDataReceiver, ) -> TextureData; // Provided methods fn create_texture_from_png( &self, resources: &dyn ResourceLoader, name: &str, ) -> Self::Texture { ... } fn create_program_from_shader_names( &self, resources: &dyn ResourceLoader, program_name: &str, vertex_shader_name: &str, fragment_shader_name: &str, ) -> Self::Program { ... } fn create_program( &self, resources: &dyn ResourceLoader, name: &str, ) -> Self::Program { ... }
}

Required Associated Types§

Required Methods§

Source

fn create_texture(&self, format: TextureFormat, size: Vector2I) -> Self::Texture

Source

fn create_texture_from_data( &self, format: TextureFormat, size: Vector2I, data: TextureDataRef<'_>, ) -> Self::Texture

Source

fn create_shader( &self, resources: &dyn ResourceLoader, name: &str, kind: ShaderKind, ) -> Self::Shader

Source

fn create_shader_from_source( &self, name: &str, source: &[u8], kind: ShaderKind, ) -> Self::Shader

Source

fn create_vertex_array(&self) -> Self::VertexArray

Source

fn create_program_from_shaders( &self, resources: &dyn ResourceLoader, name: &str, vertex_shader: Self::Shader, fragment_shader: Self::Shader, ) -> Self::Program

Source

fn get_vertex_attr( &self, program: &Self::Program, name: &str, ) -> Option<Self::VertexAttr>

Source

fn get_uniform(&self, program: &Self::Program, name: &str) -> Self::Uniform

Source

fn bind_buffer( &self, vertex_array: &Self::VertexArray, buffer: &Self::Buffer, target: BufferTarget, )

Source

fn configure_vertex_attr( &self, vertex_array: &Self::VertexArray, attr: &Self::VertexAttr, descriptor: &VertexAttrDescriptor, )

Source

fn create_framebuffer(&self, texture: Self::Texture) -> Self::Framebuffer

Source

fn create_buffer(&self) -> Self::Buffer

Source

fn allocate_buffer<T>( &self, buffer: &Self::Buffer, data: BufferData<'_, T>, target: BufferTarget, mode: BufferUploadMode, )

Source

fn framebuffer_texture<'f>( &self, framebuffer: &'f Self::Framebuffer, ) -> &'f Self::Texture

Source

fn destroy_framebuffer(&self, framebuffer: Self::Framebuffer) -> Self::Texture

Source

fn texture_format(&self, texture: &Self::Texture) -> TextureFormat

Source

fn texture_size(&self, texture: &Self::Texture) -> Vector2I

Source

fn set_texture_sampling_mode( &self, texture: &Self::Texture, flags: TextureSamplingFlags, )

Source

fn upload_to_texture( &self, texture: &Self::Texture, rect: RectI, data: TextureDataRef<'_>, )

Source

fn read_pixels( &self, target: &RenderTarget<'_, Self>, viewport: RectI, ) -> Self::TextureDataReceiver

Source

fn begin_commands(&self)

Source

fn end_commands(&self)

Source

fn draw_arrays(&self, index_count: u32, render_state: &RenderState<'_, Self>)

Source

fn draw_elements(&self, index_count: u32, render_state: &RenderState<'_, Self>)

Source

fn draw_elements_instanced( &self, index_count: u32, instance_count: u32, render_state: &RenderState<'_, Self>, )

Source

fn create_timer_query(&self) -> Self::TimerQuery

Source

fn begin_timer_query(&self, query: &Self::TimerQuery)

Source

fn end_timer_query(&self, query: &Self::TimerQuery)

Source

fn try_recv_timer_query(&self, query: &Self::TimerQuery) -> Option<Duration>

Source

fn recv_timer_query(&self, query: &Self::TimerQuery) -> Duration

Source

fn try_recv_texture_data( &self, receiver: &Self::TextureDataReceiver, ) -> Option<TextureData>

Source

fn recv_texture_data(&self, receiver: &Self::TextureDataReceiver) -> TextureData

Provided Methods§

Source

fn create_texture_from_png( &self, resources: &dyn ResourceLoader, name: &str, ) -> Self::Texture

Source

fn create_program_from_shader_names( &self, resources: &dyn ResourceLoader, program_name: &str, vertex_shader_name: &str, fragment_shader_name: &str, ) -> Self::Program

Source

fn create_program( &self, resources: &dyn ResourceLoader, name: &str, ) -> Self::Program

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§