Target
Description
Section titled “Description”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.
Example
Section titled “Example”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()) }
import { Renderer, Shader } from "fragmentcolor";
const renderer = new Renderer();
// Use your platform's windowing system to create a window.// We officially support Winit. Check the examples folder for details.const canvas = document.createElement('canvas');
const target = await renderer.createTarget(canvas);
// To animate, render again in your event loop...renderer.render(new Shader(""), target);renderer.render(new Shader(""), target);
from rendercanvas.auto import RenderCanvas, loop
from fragmentcolor import Renderer, Shader
renderer = Renderer()
# Use your platform's windowing system to create a window.# We officially support Winit. Check the examples folder for details.canvas = RenderCanvas(size=(800, 600))
target = renderer.create_target(canvas)
# To animate, render again in your event loop...renderer.render(Shader(""), target)renderer.render(Shader(""), target)
// Swift placeholder: bindings WIP
// Kotlin placeholder: bindings WIP
Methods
Section titled “Methods”Target::get_image() -> VecVec<u8>
Section titled “Target::get_image() -> VecVec<u8>”Returns the current contents of the target as a byte array in RGBA8 format.
Example
Section titled “Example”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); // RGBA8Ok(())}fn main() -> Result<(), Box<dyn std::error::Error>> { pollster::block_on(run()) }
import { Shader, Renderer } from "fragmentcolor";
const renderer = new Renderer();const target = await renderer.createTextureTarget([16, 16]);renderer.render(new Shader(""), target);
const image = target.getImage();
from rendercanvas.auto import RenderCanvas, loop
from fragmentcolor import Shader, Renderer
renderer = Renderer()target = renderer.create_texture_target([16, 16])renderer.render(Shader(""), target)
image = target.get_image()
// Swift placeholder: bindings WIP
// Kotlin placeholder: bindings WIP
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.
Example
Section titled “Example”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()) }
import { Renderer } from "fragmentcolor";
const renderer = new Renderer();const target = await renderer.createTextureTarget([64, 32]);
target.resize([128, 64]);
from fragmentcolor import Renderer
renderer = Renderer()target = renderer.create_texture_target([64, 32])
target.resize([128, 64])
// Swift placeholder: bindings WIP
// Kotlin placeholder: bindings WIP
Target::size() -> Size { width, height }
Section titled “Target::size() -> Size { width, height }”Returns the size of the Target in pixels.
Example
Section titled “Example”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()) }
import { Renderer } from "fragmentcolor";
const renderer = new Renderer();const target = await renderer.createTextureTarget([64, 32]);const size = target.size();const width = size.width;const height = size.height;const depth = size.depth;
from fragmentcolor import Renderer
renderer = Renderer()target = renderer.create_texture_target([64, 32])size = target.sizewidth = size.widthheight = size.heightdepth = size.depth
// Swift placeholder: bindings WIP
// Kotlin placeholder: bindings WIP