use windows::Win32::Graphics::Direct3D11::{ID3D11Device4, ID3D11PixelShader, ID3D11VertexShader};
use crate::Result;
use crate::error::DxFilterErr;
pub struct VertexShader(ID3D11VertexShader);
impl VertexShader {
pub fn new(blob: &[u8], device: ID3D11Device4) -> Result<Self> {
let mut shader = None;
if let Err(e) = unsafe { device.CreateVertexShader(blob, None, Some(&mut shader)) } {
return Err(DxFilterErr::Unknown(format!("{:?}", e)));
}
return Ok(Self(shader.unwrap()));
}
pub fn as_raw_ref(&self) -> &ID3D11VertexShader {
return &self.0;
}
}
pub struct PixelShader(ID3D11PixelShader);
impl PixelShader {
pub fn new(blob: &[u8], device: ID3D11Device4) -> Result<Self> {
let mut shader = None;
if let Err(e) = unsafe { device.CreatePixelShader(blob, None, Some(&mut shader)) } {
return Err(DxFilterErr::Unknown(format!("{:?}", e)));
}
return Ok(Self(shader.unwrap()));
}
pub fn as_raw_ref(&self) -> &ID3D11PixelShader {
return &self.0;
}
}