use windows::Win32::{
Graphics::Gdi::MonitorFromWindow, UI::WindowsAndMessaging::GetForegroundWindow,
};
fn main() -> anyhow::Result<()> {
use tracing_subscriber::EnvFilter;
let filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("debug"));
tracing_subscriber::fmt().with_env_filter(filter).init();
let item = wgc::new_item_from_monitor(unsafe {
MonitorFromWindow(
GetForegroundWindow(),
windows::Win32::Graphics::Gdi::MONITOR_DEFAULTTONEAREST,
)
})?;
println!(
"Item name: {:?}, Item Size: {:?}",
item.DisplayName()?,
item.Size()?
);
let settings = wgc::WgcSettings {
frame_queue_length: 3,
..Default::default() };
println!("{:?}", settings);
let wgc = wgc::Wgc::new(item, settings)?;
for (i, frame) in wgc.take(3).enumerate() {
let frame = frame?;
let render_time = frame.render_time()?;
println!("Frame {} rendered {:?} ago", i, render_time.elapsed());
std::thread::sleep(std::time::Duration::from_millis(100));
}
Ok(())
}