Blitter 0.5.0
dotnet add package Blitter --version 0.5.0
NuGet\Install-Package Blitter -Version 0.5.0
<PackageReference Include="Blitter" Version="0.5.0" />
<PackageVersion Include="Blitter" Version="0.5.0" />
<PackageReference Include="Blitter" />
paket add Blitter --version 0.5.0
#r "nuget: Blitter, 0.5.0"
#:package Blitter@0.5.0
#addin nuget:?package=Blitter&version=0.5.0
#tool nuget:?package=Blitter&version=0.5.0
Blitter
Blitter is a small, friendly 2D & 3D graphics programming library for .NET, built on top of SDL3 (via the SDL3-CS bindings) and integrated with SkiaSharp. It wraps SDL3 in clean, idiomatic C# so you can focus on drawing things and making them move instead of wrestling with native interop and low-level GPU concepts.
⚠️ Early days. Blitter is in ongoing development. The API will likely go through changes. Use at your own risk — and have fun.
What's in the box
Window2D- bitmap/sprite-style 2D renderingWindow3D- GPU-accelerated 3D rendering- SkiaSharp Integration - Fonts, Filters, Canvas and more
- Input - keyboard, mouse, gamepad, and touch via simple events
- Audio - load and play WAV data
- Images - load, save, manipulate pixels, apply filters
- Shaders - load, save, dynamic compilation
Blitter.Bits- beyond the basics: useful tidbits for graphical appsBlitter.Blocks- building blocks: sprites, scenes, panels and more
A 2D example
A bouncing red square.
using Blitter;
var window = new Window2D(800, 600)
{
Title = "Bouncing Square",
BackgroundColor = new Color(20, 20, 40),
CloseKey = Key.Escape
};
float x = 0, vx = 200; // pixels per second
await window.RunAsync(rd =>
{
x += vx * rd.ElapsedSecondsSinceLastRender;
if (x < 0 || x > window.Size.Width - 100) vx = -vx;
rd.DrawColor = new Color(220, 60, 60);
rd.DrawFillRect(new Rect(x, 250, 100, 100));
});
A 3D example
A spinning, colored triangle rendered with a built-in shader.
using System.Numerics;
using Blitter;
var triangle = Mesh.Create<ColorVertex3D>(
[
new(new Vertex3D( 0.0f, 0.5f, 0f), Color.Red),
new(new Vertex3D( 0.5f, -0.5f, 0f), Color.Green),
new(new Vertex3D(-0.5f, -0.5f, 0f), Color.Blue),
]);
var window = new Window3D
{
Title = "Spinning Triangle",
BackgroundColor = new Color(0, 0, 32),
FullScreen = true,
CloseKey = Key.Escape
};
await window.RunAsync(r =>
{
var transform =
Matrix4x4.CreateRotationZ(r.ElapsedSecondsSinceStart) *
Matrix4x4.CreateScale(0.8f);
r.DrawMesh(triangle, transform);
});
Learn more
For full documentation, samples, and shader authoring details, see the project repository:
https://github.com/mattwar/Blitter
The samples/ folder contains runnable single-file examples covering meshes, textures, blend/depth/cull modes, debug text, split-screen, render-to-image, and more.
License
MIT. See LICENSE and THIRD-PARTY-NOTICES.md in the repository.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- SDL3-CS (>= 3.2.20)
- SDL3-CS.Native (>= 3.2.20)
- SDL3-CS.Native.Shadercross (>= 3.0.0)
- SharpGLTF.Toolkit (>= 1.0.6)
- SkiaSharp (>= 3.119.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.