use std::ffi::c_void;
use crate::{ImDrawData, ImTextureData};
#[repr(C)]
pub struct DescriptorAllocator {
pub user_data: *mut c_void,
pub allocate: Option<unsafe extern "C" fn(*mut c_void, *mut usize, *mut u64)>,
pub free: Option<unsafe extern "C" fn(*mut c_void, usize, u64)>,
}
#[repr(C)]
pub struct InitInfo {
pub device: *mut c_void,
pub command_queue: *mut c_void,
pub num_frames_in_flight: i32,
pub rtv_format: u32,
pub dsv_format: u32,
pub srv_descriptor_heap: *mut c_void,
pub descriptor_allocator: *const DescriptorAllocator,
}
unsafe extern "C" {
pub fn dear_imgui_backend_dx12_init(info: *const InitInfo) -> bool;
pub fn dear_imgui_backend_dx12_shutdown();
pub fn dear_imgui_backend_dx12_new_frame();
pub fn dear_imgui_backend_dx12_render_draw_data(
draw_data: *mut ImDrawData,
command_list: *mut c_void,
);
pub fn dear_imgui_backend_dx12_create_device_objects() -> bool;
pub fn dear_imgui_backend_dx12_invalidate_device_objects();
pub fn dear_imgui_backend_dx12_update_texture(texture: *mut ImTextureData);
}