d3d11 0.3.3

Safe(r) bindings to the D3D11 API
Documentation
use bon::Builder;
use d3d11_ffi::{Direct3D11::*, Foundation::BOOL};

use crate::{impl_device_child, verify_ffi_struct};

#[repr(transparent)]
#[derive(Clone)]
pub struct RasterizerState(pub(crate) ID3D11RasterizerState);
impl_device_child!(RasterizerState);

#[repr(C)]
#[derive(Debug, Builder, Clone)]
pub struct RasterizerDesc {
    pub fill_mode: FillMode,
    pub cull_mode: CullMode,
    #[builder(into)]
    pub front_counter_clockwise: BOOL,
    pub depth_bias: i32,
    pub depth_bias_clamp: f32,
    pub slope_scaled_depth_bias: f32,
    #[builder(into)]
    pub depth_clip_enable: BOOL,
    #[builder(into)]
    pub scissor_enable: BOOL,
    #[builder(into)]
    pub multisample_enable: BOOL,
    #[builder(into)]
    pub antialiased_line_enable: BOOL,
}
verify_ffi_struct!(RasterizerDesc, D3D11_RASTERIZER_DESC);

#[repr(i32)]
#[derive(Clone, Debug)]
pub enum FillMode {
    Wireframe = D3D11_FILL_WIREFRAME.0,
    Solid = D3D11_FILL_SOLID.0,
}

#[repr(i32)]
#[derive(Clone, Debug)]
pub enum CullMode {
    None = D3D11_CULL_NONE.0,
    Front = D3D11_CULL_FRONT.0,
    Back = D3D11_CULL_BACK.0,
}