opengl_sdk/src/backend/backend.rs

34 lines
1.1 KiB
Rust

use crate::shaders;
pub trait RenderBackend {
type ShaderSource;
type DrawCommand;
fn new() -> Self where Self: Sized;
fn resume(&mut self, event_loop: &winit::event_loop::ActiveEventLoop);
fn resize(&mut self, width: u32, height: u32);
fn draw(&self, cmd: &Self::DrawCommand);
fn suspend(&mut self);
// // Frame
// fn begin_frame(&mut self) -> FrameContext;
// fn end_frame(&mut self);
//
// // Resources
fn create_shader(&mut self, desc: Self::ShaderSource) -> Result<shaders::ShaderHandle, String>;
// fn create_buffer(&mut self, data: &[u8], usage: BufferUsage) -> BufferHandle;
// fn create_texture(&mut self, desc: TextureDescriptor) -> TextureHandle;
//
// // Material = shader + uniforms + textures bundled
// fn create_material(&mut self, shader: ShaderHandle) -> MaterialHandle;
// fn set_material_param(&mut self, material: MaterialHandle, name: &str, value: UniformValue);
}
// pub struct FrameContext<'a> {
// backend: &'a mut dyn RenderBackend,
// }
//
// impl FrameContext<'_> {
// pub fn draw(&mut self, mesh: &Mesh, material: MaterialHandle, transform: Mat4);
// }