d3d11 0.3.3

Safe(r) bindings to the D3D11 API
Documentation
use d3d11_ffi::Direct3D11::*;

use crate::verify_ffi_struct;

#[repr(i32)]
#[derive(Clone, Debug)]
pub enum ComparisonFunc {
    Always = D3D11_COMPARISON_ALWAYS.0,
    Equal = D3D11_COMPARISON_EQUAL.0,
    Greater = D3D11_COMPARISON_GREATER.0,
    GreaterEqual = D3D11_COMPARISON_GREATER_EQUAL.0,
    Less = D3D11_COMPARISON_LESS.0,
    LessEqual = D3D11_COMPARISON_LESS_EQUAL.0,
    Never = D3D11_COMPARISON_NEVER.0,
    NotEqual = D3D11_COMPARISON_NOT_EQUAL.0,
}

#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct Box3D {
    pub left: i32,
    pub top: i32,
    pub front: i32,
    pub right: i32,
    pub bottom: i32,
    pub back: i32,
}

verify_ffi_struct!(Box3D, D3D11_BOX);

pub fn calc_subresource_index(mip_slice: u32, array_slice: u32, mip_levels: u32) -> u32 {
    mip_slice + array_slice * mip_levels
}

pub fn calc_mip_count(width: u32, height: u32) -> u32 {
    width.min(height).ilog2() + 1
}