Texture
Description
Section titled “Description”A GPU texture resource. Public API wrapper that holds a shareable reference to the internal TextureObject and a numeric handle used by uniforms.
- Construct via Renderer::create_texture_* helpers (no direct constructors)
- Set on shaders with shader.set(“key”, &Texture)
- Texture owns its sampler; you can tweak filtering and wrapping via set_sampler_options.
How to use
Section titled “How to use”Create a Texture and set it on a Shader
Example
Section titled “Example”1 collapsed line
async fn run() -> Result<(), Box<dyn std::error::Error>> {
use fragmentcolor::{Renderer, Shader, Size};let renderer = Renderer::new();let shader = Shader::new(r#"@group(0) @binding(0) var my_texture: texture_2d<f32>;@group(0) @binding(1) var my_sampler: sampler;@vertex fn vs_main(@builtin(vertex_index) i: u32) -> @builtin(position) vec4<f32> {let p = array<vec2<f32>,3>(vec2f(-1.,-1.), vec2f(3.,-1.), vec2f(-1.,3.));return vec4f(p[i], 0., 1.);}@fragment fn main() -> @location(0) vec4<f32> { return vec4f(1.,1.,1.,1.); }"#)?;
// 1x1 RGBA (white) raw pixel byteslet pixels: &[u8] = &[255,255,255,255];let texture = renderer.create_texture_with_size(pixels, [1,1]).await?;
// insert the texture in the shader matching the name in the shadershader.set("my_texture", &texture)?;
4 collapsed lines
_ = shader;Ok(())}fn main() -> Result<(), Box<dyn std::error::Error>> { pollster::block_on(run()) }
import { Renderer, Shader } from "fragmentcolor";const renderer = new Renderer();const shader = new Shader(`@group(0) @binding(0) var my_texture: texture_2d<f32>;@group(0) @binding(1) var my_sampler: sampler;@vertex fn vs_main(@builtin(vertex_index) i: u32) -> @builtin(position) vec4<f32> {let p = array<vec2<f32>,3>(vec2f(-1.,-1.), vec2f(3.,-1.), vec2f(-1.,3.));return vec4f(p[i], 0., 1.);}@fragment fn main() -> @location(0) vec4<f32> { return vec4f(1.,1.,1.,1.); }
`);
// 1x1 RGBA (white) raw pixel bytesconst pixels = [255,255,255,255];const texture = await renderer.createTextureWithSize(pixels, [1,1]);
// insert the texture in the shader matching the name in the shadershader.set("my_texture", texture);
from fragmentcolor import Renderer, Shaderrenderer = Renderer()shader = Shader("""@group(0) @binding(0) var my_texture: texture_2d<f32>;@group(0) @binding(1) var my_sampler: sampler;@vertex fn vs_main(@builtin(vertex_index) i: u32) -> @builtin(position) vec4<f32> {let p = array<vec2<f32>,3>(vec2f(-1.,-1.), vec2f(3.,-1.), vec2f(-1.,3.));return vec4f(p[i], 0., 1.);}@fragment fn main() -> @location(0) vec4<f32> { return vec4f(1.,1.,1.,1.); }
""")
# 1x1 RGBA (white) raw pixel bytespixels = [255,255,255,255]texture = renderer.create_texture_with_size(pixels, [1,1])
# insert the texture in the shader matching the name in the shadershader.set("my_texture", texture)
// Swift placeholder: bindings WIP
// Kotlin placeholder: bindings WIP
Methods
Section titled “Methods”Texture::size
Section titled “Texture::size”Returns the texture size (w, h[, d]).
Example
Section titled “Example”1 collapsed line
async fn run() -> Result<(), Box<dyn std::error::Error>> {use fragmentcolor::{Renderer, Size};let renderer = Renderer::new();let pixels: &[u8] = &[255,255,255,255];let tex = renderer.create_texture_with_size(pixels, [1,1]).await?;let sz = tex.size();4 collapsed lines
assert_eq!([sz.width, sz.height], [1, 1]);Ok(())}fn main() -> Result<(), Box<dyn std::error::Error>> { pollster::block_on(run()) }
import { Renderer } from "fragmentcolor";const renderer = new Renderer();const pixels = [255,255,255,255];const tex = await renderer.createTextureWithSize(pixels, [1,1]);const sz = tex.size();
from fragmentcolor import Rendererrenderer = Renderer()pixels = [255,255,255,255]tex = renderer.create_texture_with_size(pixels, [1,1])sz = tex.size
// Swift placeholder: bindings WIP
// Kotlin placeholder: bindings WIP
Texture::aspect
Section titled “Texture::aspect”Returns width/height as f32.
Example
Section titled “Example”1 collapsed line
async fn run() -> Result<(), Box<dyn std::error::Error>> {
use fragmentcolor::{Renderer, Size};
let renderer = Renderer::new();// 1x1 RGBA (white) raw pixel byteslet pixels: &[u8] = &[255,255,255,255];let tex = renderer.create_texture_with_size(pixels, [1, 1]).await?;let a = tex.aspect();
4 collapsed lines
assert!(a > 0.0);Ok(())}fn main() -> Result<(), Box<dyn std::error::Error>> { pollster::block_on(run()) }
import { Renderer } from "fragmentcolor";
const renderer = new Renderer();// 1x1 RGBA (white) raw pixel bytesconst pixels = [255,255,255,255];const tex = await renderer.createTextureWithSize(pixels, [1, 1]);const a = tex.aspect();
from fragmentcolor import Renderer
renderer = Renderer()# 1x1 RGBA (white) raw pixel bytespixels = [255,255,255,255]tex = renderer.create_texture_with_size(pixels, [1, 1])a = tex.aspect()
// Swift placeholder: bindings WIP
// Kotlin placeholder: bindings WIP
Texture::set_sampler_options
Section titled “Texture::set_sampler_options”Update the texture sampler options (filtering, wrapping, etc.).
Note: changes take effect on next bind; the renderer recreates the sampler as needed.
Example
Section titled “Example”1 collapsed line
async fn run() -> Result<(), Box<dyn std::error::Error>> {use fragmentcolor::{Renderer, Size, SamplerOptions};let renderer = Renderer::new();// 1x1 RGBA (white) raw pixel byteslet pixels: &[u8] = &[255,255,255,255];
let texture = renderer.create_texture_with_size(pixels, [1,1]).await?;let opts = SamplerOptions { repeat_x: true, repeat_y: true, smooth: true, compare: None };texture.set_sampler_options(opts);
3 collapsed lines
Ok(())}fn main() -> Result<(), Box<dyn std::error::Error>> { pollster::block_on(run()) }
import { Renderer } from "fragmentcolor";const renderer = new Renderer();// 1x1 RGBA (white) raw pixel bytesconst pixels = [255,255,255,255];
const texture = await renderer.createTextureWithSize(pixels, [1,1]);const opts = {repeat_x: true, repeat_y: true, smooth: true, compare: null};texture.setSamplerOptions(opts);
from fragmentcolor import Rendererrenderer = Renderer()# 1x1 RGBA (white) raw pixel bytespixels = [255,255,255,255]
texture = renderer.create_texture_with_size(pixels, [1,1])opts = {"repeat_x": True, "repeat_y": True, "smooth": True, "compare": None}texture.set_sampler_options(opts)
// Swift placeholder: bindings WIP
// Kotlin placeholder: bindings WIP