1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
use crate::impl_interface; use crate::Interface; use com_ptr::ComPtr; use winapi::um::d3d12sdklayers::*; pub trait IDebug: Interface { fn enable_debug_layer(&self); } macro_rules! impl_debug { ($s: ident, $interface: ident, Debug) => { impl_interface!($s, $interface); impl IDebug for $s { fn enable_debug_layer(&self) { unsafe { self.0.EnableDebugLayer() } } } }; } pub struct Debug(ComPtr<ID3D12Debug>); impl_debug!(Debug, ID3D12Debug, Debug);