Skip to content

Target

The Target interface (trait in Rust) is a rendering destination for the Renderer implemented by both WindowTarget and TextureTarget.

It contains a GPU surface texture attached to a platform-specific window or an offscreen texture for headless rendering (see TextureTarget).

Target constructors are private and can only be created via the Renderer using either Renderer.create_target(window) for on-screen rendering, or Renderer.create_texture_target() for offscreen rendering.

1 collapsed line
async fn run() -> Result<(), Box<dyn std::error::Error>> {
use fragmentcolor::{Renderer, Shader};
let renderer = Renderer::new();
// Use your platform's windowing system to create a window.
// We officially support Winit. Check the examples folder for details.
let window = fragmentcolor::headless_window([800, 600]);
let target = renderer.create_target(window).await?;
// To animate, render again in your event loop...
renderer.render(&Shader::default(), &target)?;
renderer.render(&Shader::default(), &target)?;
3 collapsed lines
Ok(())
}
fn main() -> Result<(), Box<dyn std::error::Error>> { pollster::block_on(run()) }

Returns the current contents of the target as a byte array in RGBA8 format.

1 collapsed line
async fn run() -> Result<(), Box<dyn std::error::Error>> {
use fragmentcolor::{Shader, Renderer, Target};
let renderer = Renderer::new();
let target = renderer.create_texture_target([16, 16]).await?;
renderer.render(&Shader::default(), &target)?;
let image = target.get_image();
4 collapsed lines
assert_eq!(image.len(), 16 * 16 * 4); // RGBA8
Ok(())
}
fn main() -> Result<(), Box<dyn std::error::Error>> { pollster::block_on(run()) }

Target::resize(size: Size { width, heigth } | (u32, u32) | [u32; 2])

Section titled “Target::resize(size: Size { width, heigth } | (u32, u32) | [u32; 2])”

Resizes the Target to the given width and height.

1 collapsed line
async fn run() -> Result<(), Box<dyn std::error::Error>> {
use fragmentcolor::{Renderer, Target};
let renderer = Renderer::new();
let mut target = renderer.create_texture_target([64, 32]).await?;
target.resize([128, 64]);
5 collapsed lines
let size: [u32; 2] = target.size().into();
assert_eq!(size, [128, 64]);
Ok(())
}
fn main() -> Result<(), Box<dyn std::error::Error>> { pollster::block_on(run()) }

Returns the size of the Target in pixels.

1 collapsed line
async fn run() -> Result<(), Box<dyn std::error::Error>> {
use fragmentcolor::{Renderer, Target};
let renderer = Renderer::new();
let target = renderer.create_texture_target([64, 32]).await?;
let size = target.size();
let width = size.width;
let height = size.height;
let depth = size.depth;
10 collapsed lines
assert_eq!(size.width, 64);
assert_eq!(size.height, 32);
assert_eq!(size.depth, Some(1));
let size: [u32; 2] = target.size().into();
assert_eq!(size, [64, 32]);
let size: [u32; 3] = target.size().into();
assert_eq!(size, [64, 32, 1]);
Ok(())
}
fn main() -> Result<(), Box<dyn std::error::Error>> { pollster::block_on(run()) }