Blitter 0.5.0

dotnet add package Blitter --version 0.5.0
                    
NuGet\Install-Package Blitter -Version 0.5.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Blitter" Version="0.5.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Blitter" Version="0.5.0" />
                    
Directory.Packages.props
<PackageReference Include="Blitter" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Blitter --version 0.5.0
                    
#r "nuget: Blitter, 0.5.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Blitter@0.5.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Blitter&version=0.5.0
                    
Install as a Cake Addin
#tool nuget:?package=Blitter&version=0.5.0
                    
Install as a Cake Tool

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 rendering
  • Window3D - 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 apps
  • Blitter.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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.5.0 0 5/15/2026
0.4.0 87 5/11/2026
0.3.0 87 5/9/2026