Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/ProwlEngine/Prowl.Quill/llms.txt

Use this file to discover all available pages before exploring further.

Prowl.Quill is distributed as a NuGet package and integrates with any .NET project that targets a supported framework. The library has a single direct dependency — Prowl.Scribe — which is pulled in automatically by the package manager. Backend packages (OpenTK, Raylib, SFML, Silk.NET) are added separately and only when you need them, keeping your project graph lean.

Add Prowl.Quill

Choose the method that matches your workflow. Both install the same package and produce identical results.
dotnet add package Prowl.Quill
After installation, restore packages in the usual way:
dotnet restore

Supported Target Frameworks

Prowl.Quill’s Quill.csproj declares the following <TargetFrameworks>:
FrameworkNotes
net6.0Minimum supported .NET version
net7.0
net8.0Current LTS release
net9.0
net10.0Latest / preview
netstandard2.1Unity, Xamarin, and other netstandard-compatible runtimes
.NET Standard 2.1 support means you can reference Prowl.Quill from Unity 2021.2+ projects (which implement netstandard2.1) without any special shims. You will still need to supply your own ICanvasRenderer backend that uses Unity’s graphics API.

Dependency: Prowl.Scribe

Prowl.Quill has exactly one direct NuGet dependency:
<PackageReference Include="Prowl.Scribe" Version="0.9.1" />
Prowl.Scribe provides TrueType font loading, glyph rasterization, atlas packing, and text/rich-text layout. It is bundled automatically — you do not need to add it manually. If you want to use Scribe’s API directly (e.g., to create FontFile or TextLayoutSettings objects), it is available in the Prowl.Scribe namespace after installing Prowl.Quill.

Backend-Specific Packages

Quill’s rendering core is backend-agnostic. The sample backends in the repository each depend on their own graphics framework package. Add whichever one matches your target platform:
The OpenTK backend targets OpenGL 3.3 Core and is the most fully featured sample (including dual-Kawase backdrop blur).
dotnet add package OpenTK --version 4.9.4
<PackageReference Include="OpenTK" Version="4.9.4" />
Copy CanvasRenderer.cs and the shared Common shader sources from Samples/OpenTKExample/ into your project. The CanvasRenderer class implements ICanvasRenderer and is self-contained.
All backend sample files are in the Prowl.Quill GitHub repository under Samples/. Each backend directory is a standalone runnable project you can reference directly while developing.

Verify Your Installation

Create a minimal console project and confirm the namespace resolves correctly:
using Prowl.Quill;

// Canvas requires an ICanvasRenderer — this line confirms the package resolved.
Console.WriteLine($"Prowl.Quill ready. Canvas type: {typeof(Canvas).FullName}");
dotnet run
# Prowl.Quill ready. Canvas type: Prowl.Quill.Canvas

Project File Reference

A complete .csproj for an OpenTK-backed Quill application looks like this:
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>

  <ItemGroup>
    <!-- Core library (brings in Prowl.Scribe automatically) -->
    <PackageReference Include="Prowl.Quill" Version="1.4.0" />

    <!-- OpenTK backend dependency -->
    <PackageReference Include="OpenTK" Version="4.9.4" />
  </ItemGroup>

</Project>
Prowl.Quill requires <Nullable>enable</Nullable> in your project file when targeting net6.0 or later because the library’s public API surface uses C# nullable reference type annotations. Projects that have nullable analysis disabled may see build warnings on some overloads.

Next Steps

Quickstart

Follow the step-by-step guide to draw your first shapes with the OpenTK backend.

Backends Overview

Learn how to implement a custom ICanvasRenderer for your own graphics API.

Build docs developers (and LLMs) love