pub trait Backend {
type RenderTarget: Target;
fn device_context(&self) -> &ID2D1DeviceContext;
fn d2d1_factory(&self) -> &ID2D1Factory1;
fn back_buffers(
&self,
swap_chain: &IDXGISwapChain1
) -> Result<Vec<Self::RenderTarget>>;
fn render_target(
&self,
target: &impl Interface
) -> Result<Self::RenderTarget>;
fn begin_draw(&self, target: &Self::RenderTarget);
fn end_draw(&self, target: &Self::RenderTarget);
}