Bgfx.Net 0.4.0

dotnet add package Bgfx.Net --version 0.4.0
                    
NuGet\Install-Package Bgfx.Net -Version 0.4.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="Bgfx.Net" Version="0.4.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Bgfx.Net" Version="0.4.0" />
                    
Directory.Packages.props
<PackageReference Include="Bgfx.Net" />
                    
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 Bgfx.Net --version 0.4.0
                    
#r "nuget: Bgfx.Net, 0.4.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 Bgfx.Net@0.4.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=Bgfx.Net&version=0.4.0
                    
Install as a Cake Addin
#tool nuget:?package=Bgfx.Net&version=0.4.0
                    
Install as a Cake Tool

Bgfx.Net

Cross-platform .NET bindings for bgfx, a graphics rendering library that runs on Windows, Linux, macOS, and Android with Direct3D, Vulkan, OpenGL, OpenGL ES, and Metal backends.

Packages

Package Purpose
Bgfx.Net Managed bindings + native bgfx shared library for all supported RIDs
Bgfx.Net.Tools MSBuild integration that runs shaderc / texturec / geometryc at build time. Marked developmentDependency, so it doesn't propagate into consumer output.

Supported RIDs: win-x64, linux-x64, osx-x64, osx-arm64, android-arm64, android-x64. (linux-arm64 is planned — blocked on upstream bx adding a native linux-arm64-gcc action.)

On Android the native libbgfx.so is shipped under runtimes/android-arm64/native and runtimes/android-x64/native; a net*-android app that references the package gets it bundled into the APK automatically. Two consumer-side notes:

  • The app's effective Android <RuntimeIdentifiers> must include the ABIs you want bundled — Release builds often resolve only android-arm64, so add android-x64 if you also need the x86_64 emulator.
  • Supply bgfx the native window: set PlatformData.Nwh to the ANativeWindow* obtained from the Java Surface via JNI/NDK before Init.

Quick start

using Bgfx.Net;

var init = new InitDescription { Type = RendererType.Vulkan };
Bgfx.Init(in init);

while (running)
{
    Bgfx.Frame();
}

Bgfx.Shutdown();

Cloning

This repository uses git submodules for bgfx, bx, and bimg:

git clone --recurse-submodules https://github.com/$USER/Bgfx.Net.git
# or, after a normal clone:
git submodule update --init --recursive
# or use the helper:
./build/bootstrap.sh

Building locally

Prerequisites: .NET SDK 10, plus a C++ toolchain for your platform (MSVC on Windows, gcc/clang on Linux, Xcode CLT on macOS). On Windows the native build still uses PowerShell (build-native-win.ps1). To cross-build the Android native lib, install an NDK and run build-native-android.sh android-arm64 (or android-x64) with ANDROID_NDK_ROOT set.

./build/bootstrap.sh             # init submodules, fetch genie
./build/build-native-unix.sh     # or build-native-win.ps1 on Windows
./build/sync-bindings.sh         # copies bgfx.cs into src/Bgfx.Net/Generated/
./build/run-generator.sh         # produces bgfx.g.cs
dotnet build Bgfx.Net.sln

Caveats

  • Shaders on Linux/macOS: shaderc can produce GLSL/ESSL/Metal/SPIR-V on all platforms, but Direct3D shader compilation (DXBC via fxc, DXIL via dxc) needs additional Windows-side tooling.
  • Threading: bgfx uses an API thread + render thread model selected at Init. See bgfx's docs for the threading contract.
  • Pinned to a specific bgfx revision: The Bgfx.Net assembly is built against exactly one bgfx commit. Read the pin at runtime via Bgfx.Net.BgfxBuildInfo.ApiVersion and .Revision (also embedded as BgfxApiVersion / BgfxRevision assembly metadata). The package version itself is independent wrapper SemVer, not the bgfx revision — see RELEASING.md. Mixing the assembly with a different bgfx.dll at runtime is unsupported.

License

BSD-2-Clause. See LICENSE for our code and THIRD-PARTY-NOTICES.md for upstream and 3rdparty attributions.

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.
  • net10.0

    • No dependencies.

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.4.0 107 7/4/2026
0.3.0 111 6/29/2026
0.2.0 120 6/11/2026
0.1.0 130 5/18/2026

Bundles bgfx API v147. Exact upstream commit recorded in assembly metadata (BgfxRevision).