use crate::Result;
use crate::app::App;
use pollster::FutureExt;
use polyscope_core::state::with_context_mut;
use polyscope_render::RenderEngine;
pub fn render_to_file(filename: &str, width: u32, height: u32) -> Result<()> {
let data = render_to_image(width, height)?;
polyscope_render::save_image(filename, &data, width, height)
.map_err(|e| crate::PolyscopeError::RenderError(format!("Failed to save image: {e}")))
}
pub fn render_to_image(width: u32, height: u32) -> Result<Vec<u8>> {
let mut app = App::new();
let engine = RenderEngine::new_headless(width, height)
.block_on()
.map_err(|e| {
crate::PolyscopeError::RenderError(format!("Failed to create headless engine: {e}"))
})?;
app.engine = Some(engine);
with_context_mut(|ctx| {
for structure in ctx.registry.iter_mut() {
structure.clear_gpu_resources();
}
});
app.render_frame_headless();
app.capture_to_buffer()
}