OpenTK 4.0.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package OpenTK --version 4.0.0
NuGet\Install-Package OpenTK -Version 4.0.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="OpenTK" Version="4.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add OpenTK --version 4.0.0
#r "nuget: OpenTK, 4.0.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.
// Install OpenTK as a Cake Addin
#addin nuget:?package=OpenTK&version=4.0.0

// Install OpenTK as a Cake Tool
#tool nuget:?package=OpenTK&version=4.0.0

The Open Toolkit is set of fast, low-level C# bindings for OpenGL, OpenGL ES and OpenAL. It runs on all major platforms and powers hundreds of apps, games and scientific research.  It provides bindings for GLFW windowing, input and a game loop, and is the perfect start for your own game engine.    OpenTK comes with simple and easy to follow tutorials for learning *modern* OpenGL. These are written by the community and represent all of the best practices to get you started.  Learn how to use OpenTK here:  Sample projects that accompany the tutorial can be found here:  We have a very active discord server, if you need help, want to help, or are just curious, come join us!

There are no supported framework assets in this package.

Learn more about Target Frameworks and .NET Standard.

NuGet packages (152)

Showing the top 5 NuGet packages that depend on OpenTK:

Package Downloads

The Open Toolkit is set of fast, low-level C# bindings for OpenGL, OpenGL ES and OpenAL. It runs on all major platforms and powers hundreds of apps, games and scientific research. OpenTK provides several utility libraries, including a math/linear algebra package, a windowing system, and input handling.

Xamarin.Forms.Platform.WPF The ID prefix of this package has been reserved for one of the owners of this package by

Xamarin Forms Renderer to build native UIs for WPF

SkiaSharp.Views.WindowsForms The ID prefix of this package has been reserved for one of the owners of this package by

SkiaSharp Views & Layers are a set of platform-specific views and containers that can be used to draw on the screen.


Emgu CV is a cross platform .Net wrapper to the OpenCV image processing library. Allowing OpenCV functions to be called from .NET compatible languages such as C#, VB, VC++, IronPython etc. The wrapper can be compiled in Mono and run on Windows, Linux, Mac OS X, iPhone, iPad and Android devices.

Xamarin.Forms.Platform.GTK The ID prefix of this package has been reserved for one of the owners of this package by

Xamarin Forms Renderer to build native UIs for GTK

GitHub repositories (70)

Showing the top 5 popular GitHub repositories that depend on OpenTK:

Repository Stars
.NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.
AssetStudio is a tool for exploring, extracting and exporting assets and assetbundles.
Xamarin.Forms Official Home
Interactive plotting library for .NET
SkiaSharp is a cross-platform 2D graphics API for .NET platforms based on Google's Skia Graphics Library. It provides a comprehensive 2D API that can be used across mobile, server and desktop models to render images.
Version Downloads Last updated
5.0.0-pre.9 956 10/16/2023
5.0.0-pre.8 12,961 10/28/2022
5.0.0-pre.7 8,665 4/19/2022
5.0.0-pre.6 3,825 6/16/2021
5.0.0-pre.5 440 5/29/2021
5.0.0-pre.4 376 5/22/2021
5.0.0-pre.3 8,590 3/10/2021
5.0.0-pre.2 244 3/9/2021
5.0.0-pre.1 551 3/8/2021
4.8.2 1,027 12/2/2023
4.8.1 9,621 9/27/2023
4.8.0 16,504 7/17/2023
4.7.7 38,244 2/23/2023
4.7.6 1,934 2/22/2023
4.7.5 49,892 9/8/2022
4.7.4 27,622 6/17/2022
4.7.3 2,018 6/17/2022
4.7.2 451,587 5/3/2022
4.7.1 22,209 2/17/2022
4.6.7 53,333 9/13/2021
4.6.4 32,535 5/28/2021
4.6.3 14,697 3/27/2021
4.6.2 3,437 3/19/2021
4.6.1 2,646 3/19/2021
4.6.0 2,982 3/18/2021
4.5.0 71,614 2/14/2021
4.4.0 21,207 12/16/2020
4.3.0 36,897 11/21/2020
4.2.0 5,630 11/12/2020
4.1.0 3,862 11/6/2020
4.0.6 6,273 10/18/2020
4.0.5 2,191 10/18/2020
4.0.4 2,324 10/17/2020
4.0.3 2,494 10/14/2020
4.0.2 2,405 10/11/2020
4.0.1 3,376 10/6/2020
4.0.0 7,315 10/2/2020
4.0.0-pre9.10 391 10/1/2020
4.0.0-pre9.9 305 9/30/2020
4.0.0-pre9.8 313 9/29/2020
4.0.0-pre9.7 759 9/20/2020
4.0.0-pre9.6 440 9/14/2020
4.0.0-pre9.4 755 8/30/2020
4.0.0-pre9.3 497 8/21/2020
4.0.0-pre9.2 883 7/28/2020
4.0.0-pre9.1 9,436 4/24/2020
4.0.0-pre9 2,220 4/19/2020
4.0.0-pre8 1,971 4/18/2020
4.0.0-pre7 1,773 4/13/2020
4.0.0-pre6 2,042 4/10/2020
4.0.0-pre5 2,055 4/9/2020
4.0.0-pre4 2,000 4/6/2020
4.0.0-pre3 2,292 3/19/2020
4.0.0-pre2 2,018 3/19/2020
4.0.0-pre 1,918 3/19/2020
3.3.3 41,803 9/10/2022
3.3.2 43,945 7/20/2021
3.3.1 52,424 11/6/2020
3.3.0 6,896 11/6/2020
3.2.1 13,523 10/21/2020
3.2.0 134,013 4/6/2020
3.1.0 598,602 8/4/2019
3.0.1 2,188,167 7/6/2018
3.0.0 39,865 5/1/2018
3.0.0-pre 34,910 5/8/2017
2.0.0 252,254 9/23/2016
1.1.2349.61993 62,501 6/7/2016
1.1.2225 222,808 2/4/2016
1.1.1589.5942 123,643 7/18/2014
1.1.1589.5941 56,068 5/9/2014
1.1.1579.5793 2,808 4/29/2014
1.1.1508.5724 8,220 2/17/2014
1.1.1456.5398 4,902 12/27/2013
1.1.1161.61462 4,044 8/28/2013
1.1.1160.61462 6,992 3/7/2013

Huge thanks and congratulations to the entire OpenTK Community for getting this release together.
Key changes:
Full support for .Net Core 3.1
Brand new GLFW-based windowing system
Brand new GLFW-based input system
Removed all platform-specific backends (and fixed every xplat bug!)
Math library performance improvements and fixes
All new OpenAL bindings
All new OpenCL Bindings
Total restructure of all packages into a modular system with a number of packages. The OpenTK package is now a metapackage that will automatically download all of these for you.
OpenTK 4.0.0 is entirely MIT licensed.
Full Log:
Input fixes (@HughPH)
Link to the tutorial in the package description.
Fix for broken delegates (@HughPH)
Significant rework & improvements to input. (Massive Thanks to @Phyyl, @HughPH and @NogginBops)
Fixes to OpenAL Bindings (@NogginBops)
General Math improvements (@NogginBops)
Added OpenCL Bindings (Huge thanks to @NepNet)
Fix opentk.redist.glfw version warnings (@jvbsl)
Add support for window-level multisampling (@jvbsl)
Allow null delegates for GLFW callbacks (@jvbsl)
Add new API to get/set from GLFW window/context attributes (@jvbsl)
Add vulkan surface creation (@jvbsl)
Fix bindings generator for net2.1
GLFW Native Access bindings. (@RedImp1470 @NogginBops)
Fixed normalization in Vector3.Unproject (@burnss9)
General windowing improvements and new Graphics Context API. (@NogginBops)
Use correct function in SetCharModsCallback (@jvbsl)
Return namespaces to the glorious OpenTK (thanks @glopes)
Simplified OpenAL loading + add more extensions (@NogginBops)
Fixed initial focused inconsistency between Windows and Linux(X11) (@jvbsl)
Improved and fixed GLFW binary loading (@jvbsl)
Improved mono compat (@jvbsl)
Fixed GetLibraryName for iOS platform (thanks @Grizley56)
Fixed InputAction for getting Joystick Buttons from GLFW (thanks @HughPH)
Fixes reference conditions
Save Size property value to _size field (thanks @devel0)
Update build.fsx.lock (thanks @CallumDev)
Vector3.Unproject returning incorrect result (thanks @leezer3)
Incorrect parameter order in QuaternionD constructor (thanks @leezer3)
Capslock value not exposed (thanks @KinsonDigital)
vector transforms
Start of input mode setup for caps lock (thanks @KinsonDigital)
Use in parameters instead of ref (thanks @cryovat)
OpenTK now includes **OPENAL!** (Biggest thanks to *@NogginBops*)
Added check for invalid keys in window key callback (Thanks @Phyyl)
Fix rounding errors on tests
Add individual project descriptions
Add openAL to the build sequence.
Added PositiveInfinity and NegativeInfinity to vector structs (Thanks @arakis)
Fixed ClientSize not getting updated in OnResize (Thanks @Phyyl)
Fix automatic bindings initialization for GL2 (Thanks @Phyyl)
Add framework specification to paket files. (Thanks @frederikja163)
Fixed GameWindow update frequency (Thanks @MerickOWA)
Throw an InvalidOperationException if bindings are uninitialized. (Thanks @PJB)
Added Profile Any (Thanks @arakis)
Fix error with GLFW Mouse button mapping (Thanks @GeorchW)
Build System improvements to fully automatic pipeline.
Test and fix build system
Fix package metadata
Change: Make Command a valid modifier on OS-X #759
Splitting Platform/Windows/API.cs into OpenTK.NT #765
Immediately return after restoring resolution #766
Fix OpenTK.Mathematics assembly name #768
[4.0] Implement 'unmanaged' constraint #771
Close display connection for X11 on dispose #773
[4.0] Fix StyleCop analysis not working on Windows #775
Fixed incorrect Quaternion/Vector rotation #777
[4.0] Build Cleanup #778
Fixed type for VertexAttribPointer #779
[4.0] Fix numerous binder errors #781
Fix #USE_SDL2_GAMECONTROLLER code path #782
[4.0] Refactor Generator.Rewrite #783
[4.0] Fix two typos in #785
Add common.props for use in all projects #786
[4.0] Auto-update OpenTK.sln (done by VS2017) #787
Add missing build configs (VS2017) #788
Fixed OpenGL 3.2+ Context Creation (Mixed up Profile Mask / Flags) #790
[4.0] Create new .sln file for all new projects #791
[4.0] Fix CI scripts #792
[4.0] Fix general StyleCop errors #793
[4.0] Some more small rewriter changes #794
[4.0] Refactor Generator.Bind#795
[4.0] Get CI to succeed #796
Fix: Custom cursors not working under OS-X and dotnet #797
[4.0] Fix stylecop errors in OpenTK.Mathematics.#798
Fix OpenTK.NT compilation errors #799
[4.0] Fix OpenTK.AL compilation errors #800
4.0 #802
Fix csproj references to target netstandard2.0 instead of net461. #803
Style guide#804
[4.0] Integrate OpenTK.OpenAL#805
[4.0] refactored .Math stylecop errors #806
Use props/ directory directly #813
Add #814 to 4.0 #815
Fix document typo #818
Binder Docs + Performance#826
[4.0] Embedded license handling for binding generator #836
[4.0] Adding directory safety to the binder. #837
Update README after branch changes #839
[4.0] Add StructLayout to Color4#840
[4.0] Change root namespace to OpenTK #842
Fix the aftermath of merging #842 #843
[4.0] Impliment Vectord * Quaterniond #844
Fix aftermath of #842 #846
[4.0] Minor edits to #848
[4.0] Update SDL2 version check #849
[4.0] Remove big chunk of unused code from Quaterniond.cs #852
[4.0] Remove GLES 1.0 and 1.1 support #856
[4.0] Add explicit operators for Color4/Vector4 conversions #858
[4.0] Remove unused code #860
[4.0] Begin moving Input to OpenTK.Input#861
[4.0] Begin moving Platform to OpenTK.Platform #862
[4.0] Add RootNamespace tags to projects#863
OpenGL Reimplementation #864
Input and Windowing via GLFW #867
Bindings generator for modularity and ADL#871
Update licensing information #875
Update Discord link. #876
Optimize Vector4/Color4 conversions with Unsafe.As #877
Apply Unsafe.As optimization to all vector types #878
Fix discord invite link #881
Ignoring MouseMoveEx errors and fall back to passed point. #883
Rename license files to avoid confusion. #885
Emergency fix in short license terms #887
[4.0] Adding Lerp function in the math helper #895
System.Math and OpenTK.MathHelper symmetry #897
Shorten float literals to the actual float value #898
Reflect 22/04/2019 development discussion #902
Remove obsolete methods within Vector types. #906
Add vector types with integer components. #908
OpenAL cleanup #909
Organise master #912
Purity annotations for Math types #915
Int vectors in windows #917
Box2i support #918
add Box3 #919
Box2n and Box3n cleanup #920
Add API to let users pick OpenGL version #921
Add Quaternion to Euler angles conversion #923
Fix binder script paths #924
Restore unit tests #925
Box tests #926
GLFW Input. #928
Improve EditorConfig file. #929
Adds Vulkan related GLFW methods to IGLFW. #930
Fixes the binder and makes it 10x faster. #931
Add tuple deconstructors and conversions to vector types. #933
Fix ToHSV and ToHsl functions generating nan when they shouldn't #934
Build System for 4.0 #936
Hid input #943
Implement ppi in INativeWindow. #945
Feature/new Bindings generator #946
Fix Quaternion(euler angle order -> roundtrip tests)#949
Fix windowing tests #950
chmod +x #951
Fix <LangVersion> getting applied to F# projects. #952
Feature/fix box contains #953
Test fixes #954
Fix PlatformLibraryNameContainerBase on macOS. #962
Make GLFW.Image better. #963
Default GameWindowSettings.IsSingleThreaded to true. #964
Improve mouse cursor handling. #965
Fix window icon handling. #966
Clean up window events. #967
Fix file drop events. #968
Fix incorrect type on glfwGetError. #969
Move GLFWProvider to Windowing.Desktop. #970
Make GLFW structs simpler. #971
Clean up window properties/interfaces. #972
OpenGL_Bindings.csproj: Call bash instead of sh #974
Quaternion(d): Modify instance Invert() to match static functions #975
Remove ADL from GLFW. Use DllImport. #976
Begin work on merging OpenAL extensions. #986
Fix CI system #988
GLFW API cleanup. #989
Remove reference to Mathematics from GLFW bind. #990
Revised boostrap process + update build tools #992
Add remaining GLFW Window functions #996
Bring forward 3.x binding generators to 4.0 #1004
Add matrix multiplication + missing operator to Vector2/Vector2d #1011
Optimize barycentric interpolation #1019