hexga_engine_render/
render.rs1use crate::*;
2
3pub trait RenderBackend
14{
15 fn new_buffer (&mut self, data: BufferData, source : BufferSource) -> RawBufferID;
16 fn buffer_update(&mut self, dest: RawBufferID, source: &BufferSource);
17 fn delete_buffer(&mut self, id : RawBufferID);
18
19 fn new_texture (&mut self, data : &TextureData) -> RawTextureID;
20 fn texture_update (&mut self, dest : RawTextureID, data : &TextureData);
21 fn texture_set_mag_filter (&mut self, id : RawTextureID, filter: FilterMode);
22 fn texture_set_wrap (&mut self, id : RawTextureID, wrap : (TextureWrap, TextureWrap));
23 fn texture_generate_mipmaps(&mut self, id : RawTextureID);
24 fn texture_read_pixels (&mut self, id : RawTextureID, dest : &mut TextureSource);
25 fn texture_update_portion (&mut self, id : RawTextureID, rect : Rect2P, source : &texture::TextureSource);
26 fn delete_texture (&mut self, id : RawTextureID);
27
28 fn new_render_pass (&mut self, texture : RawTextureID, depth : Option<RawTextureID>) -> RawRenderPassID;
29 fn delete_render_pass(&mut self, id: RawRenderPassID);
30
31 fn new_pipeline (&mut self, data : &PipelineData) -> RawPipelineID;
32 fn apply_pipeline (&mut self, pipeline: RawPipelineID);
33 fn delete_pipeline(&mut self, pipeline: RawPipelineID);
34
35 fn new_shader (&mut self, data : &ShaderData) -> Result<RawShaderID, ShaderError>;
36 fn delete_shader(&mut self, program: RawShaderID);
37
38 fn apply_viewport(&mut self, viewport : Rect2P);
39 fn apply_scissor (&mut self, scissor : Rect2P);
40
41 fn apply_bindings_view(&mut self, binding : BindingsView);
42 fn apply_bindings(&mut self, binding : &Bindings) { self.apply_bindings_view(binding.view()); }
43
44 fn apply_uniforms(&mut self, uniforms: UniformsSource) { self.apply_uniforms_from_bytes(&*uniforms.source); }
45 fn apply_uniforms_from_bytes(&mut self, uniform_ptr: &[u8]);
46
47 fn clear(&mut self, data : ClearData);
48
49 fn begin_default_pass(&mut self, action: PassAction);
50 fn begin_pass(&mut self, pass: Option<RawRenderPassID>, action: PassAction);
51 fn end_render_pass(&mut self);
52
53 fn end_frame(&mut self);
54 fn draw(&mut self, base_element: usize, num_elements: usize, num_instances: usize);
55}
56
57
58impl RenderBackend for ()
59{
60 fn new_buffer (&mut self, _: BufferData, _ : BufferSource) -> RawBufferID { RawBufferID::default() }
61 fn buffer_update(&mut self, _: RawBufferID, _: &BufferSource) {}
62 fn delete_buffer(&mut self,_id : RawBufferID) {}
63
64 fn new_texture (&mut self, _ : &TextureData) -> RawTextureID { RawTextureID::default() }
65 fn texture_update (&mut self, _ : RawTextureID, _ : &TextureData) {}
66 fn texture_set_mag_filter (&mut self, _ : RawTextureID, _: FilterMode) {}
67 fn texture_set_wrap (&mut self, _ : RawTextureID, _ : (TextureWrap, TextureWrap)) {}
68 fn texture_generate_mipmaps(&mut self, _ : RawTextureID) {}
69 fn texture_read_pixels (&mut self, _ : RawTextureID, _ : &mut TextureSource) {}
70 fn texture_update_portion (&mut self, _ : RawTextureID, _ : Rect2P, _ : &texture::TextureSource) {}
71 fn delete_texture (&mut self, _ : RawTextureID) {}
72
73 fn new_render_pass (&mut self, _ : RawTextureID, _ : Option<RawTextureID>) -> RawRenderPassID { RawRenderPassID::default() }
74 fn delete_render_pass(&mut self, _: RawRenderPassID) {}
75 fn new_pipeline (&mut self, _ : &PipelineData) -> RawPipelineID { RawPipelineID::default() }
76 fn apply_pipeline (&mut self, _: RawPipelineID) {}
77 fn delete_pipeline(&mut self, _: RawPipelineID) {}
78 fn new_shader (&mut self, _ : &ShaderData) -> Result<RawShaderID, ShaderError> { Ok(RawShaderID::default()) }
79 fn delete_shader(&mut self, _: RawShaderID) {}
80 fn apply_viewport(&mut self, _ : Rect2P) {}
81 fn apply_scissor (&mut self, _ : Rect2P) {}
82 fn apply_bindings_view(&mut self, _ : BindingsView) {}
83 fn apply_uniforms_from_bytes(&mut self, _: &[u8]) {}
84 fn clear(&mut self, _ : ClearData) {}
85 fn begin_default_pass(&mut self, _: PassAction) {}
86 fn begin_pass(&mut self, _: Option<RawRenderPassID>, _: PassAction) {}
87 fn end_render_pass(&mut self) {}
88 fn end_frame(&mut self) {}
89 fn draw(&mut self, _: usize, _: usize, _: usize) {}
90}