OpenTK 5.0.0-pre.16
The Open Toolkit is set of fast, low-level C# bindings for OpenGL, OpenGL ES, OpenAL and OpenCL. 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: https://opentk.net/learn/index.html Sample projects that accompany the tutorial can be found here: https://github.com/opentk/LearnOpenTK We have a very active discord server, if you need help, want to help, or are just curious, come join us! https://discord.gg/6HqD48s
Showing the top 20 packages that depend on OpenTK.
| Packages | Downloads |
|---|---|
|
SkiaSharp.Views.WindowsForms
SkiaSharp Views & Layers are a set of platform-specific views and containers that can be used to draw on the screen.
|
15 |
|
OpenTK.GLControl
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.
|
15 |
|
SkiaSharp.Views.WindowsForms
SkiaSharp Views & Layers are a set of platform-specific views and containers that can be used to draw on the screen.
|
14 |
|
SkiaSharp.Views.WPF
SkiaSharp Views & Layers are a set of platform-specific views and containers that can be used to draw on the screen.
|
14 |
Update to .NET 10. (@NogginBops)
Migrate to `slnx` solution. (@NogginBops)
Remove paket from the build system and use `dotnet pack` instead. (@NogginBops)
Update descriptions and READMEs of packages to be consistent. (@NogginBops)
Removed `OpenTK.Input` package and namespace. (@NogginBops)
Enable source link for OpenTK packages. (@NogginBops)
Unified the OpenAL and OpenGL bindings generator code and simplified it significantly. (@NogginBops)
Make `VectorN.ComponentMin` and `VectorN.ComponentMax` properly NaN propagating. (@NogginBops)
Add `VectorN.ComponentMinNumber`, `VectorN.ComponentMinNative`, `VectorN.ComponentMaxNumber`, and `VectorN.ComponentMaxNative`. (@NogginBops)
Reworked `Box2/i/d` and `Box3/i/d` structs significantly. (@NogginBops)
Made `Min` and `Max` raw fields.
Changed `BoxN.Contains` to actually test if the box is completely contained. For the old behavior use `BoxN.IntersectsWith` or `BoxN.Touches`.
Add `BoxN.Empty` to represent empty boxes for use in bounding box calculations.
Add `BoxN.Zero` to represent point at (0, 0).
Add `BoxN.IsEmpty`, `BoxN.IsPoint`, and `BoxN.HasZeroArea`, `Box2.Area`, and `Box3.Volume` properties.
Removed `BoxN.Top`, `BoxN.Right`, `BoxN.Bottom`, `BoxN.Left`, `BoxN.X`, `BoxN.Y`, `BoxN.SizeX`, `BoxN.SizeY`, `BoxN.CenteredSize`, `BoxN.IsZero` properties.
Removed setters for `BoxN.Width`, `BoxN.Height`, `BoxN.Size`, `BoxN.Location` properties.
Added `BoxN.DistanceToNearestPointInBox`, `BoxN.DistanceToNearestEdge`, `BoxN.SignedDistanceToNearestEdge`, `BoxN.NearestPointInBox`, and `BoxN.NearestPointOnEdge`.
Added `BoxNi.EuclidianDistanceToNearestPointInBox`, `BoxNi.EuclidianDistanceToNearestEdge`, `BoxNi.ManhattanDistanceToNearestEdge`, `BoxNi.SignedEuclidianDistanceToNearestEdge`, and `BoxNi.SignedManhattanDistanceToNearestEdge`.
Changed `BoxN.Round`, `BoxN.Floor`, and `BoxN.Ceiling` to return `BoxN` instead of `BoxNi`.
Added `BoxN.FloorCeiling` that floors min point and ceilings the max point.
OpenAL bindings changes**:
Add documentation to ALC and AL enums. (@NogginBops)
Add OpenAL specification and extension specificiation links to OpenAL function documentation. (@NogginBops)
Fix typo `AL.DopperFactor` -> `AL.DopplerFactor`. (@NogginBops)
Capitalization of "1D", "2D", and "3D" is now correct. (@NogginBops)
Add version info to enum members. (@NogginBops)
Add back `ALC.GetContextAttributes` and `ALC.GetStringList` (@NogginBops)
Change `AL.SourceQueueBuffers` and `AL.SourceUnqueueBuffers` to take `int` instead of `uint`. (@NogginBops)
Fixed capitalization of many acronyms in the OpenAL bindings. (@NogginBops)
Document original enum name in inline enum documentation. (@NogginBops)
Vulkan bindings changes**:
Updates vulkan bindings to 1.4.352. (@NogginBops)
Capitalization of "1D", "2D", and "3D" is now correct. (@NogginBops)
Fix underlying type for dispatchable handles on 32-bit platforms. (@NogginBops)
Added inline documentation annotations for optional and extern sync parameters. (@NogginBops)
Fix 64-bit enums with values larger than `int.MaxValue` having the wrong values. (@NogginBops)
Properly XML escape documentation comments for struct members. (@NogginBops)
OpenGL bindings changes**:
Capitalization of "1D", "2D", and "3D" is now correct. (@NogginBops)
Fix inline documentation now working correctly being included in the nuget package. (@NogginBops)
Fix extension documentation links sometimes being broken. (@NogginBops)
Remove GLES2 functions from OpenGL namespace that had snuck in and vice versa. (@NogginBops)
Make `GL.ObjectLabel` and `GL.ObjectPtrLabel` take an `int` parameter instead of `uint` for the OpenGL object. (@NogginBops)
Make `GL.ObjectPtrLabel` correctly take a `GLSync` parameter. (@NogginBops)
Add `GL.GetShaderInfoLog` and `GL.GetProgramInfoLog` overloads returning a `string`. (@NogginBops)
Capitalization of "1D" is now correct. (@NogginBops)
Add `ClipOrigin` and `ClipDepthMode` to the `GetPName` enum. (@NogginBops)
Removed extension functions marked for compatibility profile from `OpenTK.Graphics.OpenGL`. (@NogginBops)
Updated to latest OpenGL 4 documentation. Notably `GL.DrawElements` now correctly documents `indices` as being an offset and not a pointer to the index data itself. (@NogginBops)
Add version info to enum members. (@NogginBops)
Document original enum name in inline enum documentation. (@NogginBops)
PAL2 changes**:
Added `Toolkit.Window.GetOpenGLContext` to get OpenGL context from a window handle if one has been created. (@NogginBops)
Added `Toolkit.OpenGL.GetWindow` to get the window that was used to create a OpenGL context. (@NogginBops)
Rework `Toolkit.Joystick` to handle arbitrary number of buttons and axes. (@NogginBops)
`Toolkit.Joystick` is only implemented in the Win32 and SDL backends so far.
Add `Toolkit.Gamepad` for xbox style gamepad support. (@NogginBops)
`Toolkit.Gamepad` only works *partially* in the Win32 backend so far.
Changed `Toolkit.Keyboard.GetActiveKeyboardLayout` to `Toolkit.Keyboard.GetActiveInputLanguage`. (@NogginBops)
Changed `Toolkit.Keyboard.GetAvailableKeyboardLayouts` to `Toolkit.Keyboard.GetInstalledInputLanguages`. (@NogginBops)
Add `DisplayValuesChangedEvent` which is sent when various properties of displays change. (@NogginBops)
Add `ClientPosition` property to `MouseButtonDownEventArgs` and `MouseButtonUpEventArgs`. (@NogginBops)
Add `Clicks` property to `MouseButtonDownEventArgs` and `MouseButtonUpEventArgs` for detecting double-clicks. (@NogginBops)
Replaced `EventQueue` with `Toolkit.Event` and remove some unused apis from `EventQueue`. (@NogginBops)
win32:
Fix issue where non-integer refresh rates would cause `ExclusiveFullscreen` to fail. (@NogginBops)
Partial fix to high polling rate mice having large impact on framerate. (@JoeTwizzle, @NogginBops)
Added `ToolkitOptions.Windows.MaxWindowMessagesPerFrame` to limit the number of events processed in a frame, can help with high polling rate mice performance. (@JoeTwizzle, @NogginBops)
Fix bug where changing the window border mode would give the window focus. (@NogginBops)
macOS:
Fix issue with missing entry point `objc_msgSend_stret` on apple silicon. (@NogginBops)
x11:
Read `Xft.dpi` setting for `Toolkit.Display.GetDisplayScale` and `Toolkit.Window.GetContentScale`. (@NogginBops)
Made `Toolkit.Shell.AllowScreenSaver(false, ...)` a little more likely to work. (@NogginBops)
Use freedesktop UPower dbus service, if available, for more reliable battery information. (@NogginBops)
Use gsettings, if available, to get more accurate keyboard layout information. (@NogginBops)
Any 0.0
- OpenTK.Audio (>= 5.0.0-pre.16)
- OpenTK.Compute (>= 5.0.0-pre.16)
- OpenTK.Core (>= 5.0.0-pre.16)
- OpenTK.Graphics (>= 5.0.0-pre.16)
- OpenTK.Mathematics (>= 5.0.0-pre.16)
- OpenTK.Platform (>= 5.0.0-pre.16)
- OpenTK.Windowing.Common (>= 5.0.0-pre.16)
- OpenTK.Windowing.Desktop (>= 5.0.0-pre.16)
- OpenTK.Windowing.GraphicsLibraryFramework (>= 5.0.0-pre.16)
| Version | Downloads | Last updated |
|---|---|---|
| 5.0.0-pre.16 | 1 | 05/19/2026 |
| 5.0.0-pre.15 | 8 | 09/13/2025 |
| 5.0.0-pre.14 | 9 | 08/05/2025 |
| 5.0.0-pre.13 | 12 | 03/21/2025 |
| 5.0.0-pre.12 | 13 | 03/21/2025 |
| 5.0.0-pre.11 | 13 | 03/21/2025 |
| 5.0.0-pre.10 | 13 | 03/21/2025 |
| 5.0.0-pre.9 | 13 | 03/21/2025 |
| 5.0.0-pre.8 | 13 | 03/21/2025 |
| 5.0.0-pre.7 | 12 | 03/21/2025 |
| 5.0.0-pre.6 | 13 | 03/21/2025 |
| 5.0.0-pre.5 | 13 | 03/21/2025 |
| 5.0.0-pre.4 | 13 | 03/21/2025 |
| 5.0.0-pre.3 | 14 | 03/21/2025 |
| 5.0.0-pre.2 | 13 | 03/21/2025 |
| 5.0.0-pre.1 | 13 | 03/21/2025 |
| 4.9.4 | 13 | 03/21/2025 |
| 4.9.3 | 13 | 03/21/2025 |
| 4.9.2 | 13 | 03/21/2025 |
| 4.9.1 | 13 | 03/21/2025 |
| 4.8.2 | 13 | 03/21/2025 |
| 4.8.1 | 13 | 03/21/2025 |
| 4.8.0 | 13 | 03/21/2025 |
| 4.7.7 | 13 | 03/21/2025 |
| 4.7.6 | 13 | 03/21/2025 |
| 4.7.5 | 14 | 03/21/2025 |
| 4.7.4 | 13 | 03/21/2025 |
| 4.7.3 | 13 | 03/21/2025 |
| 4.7.2 | 13 | 03/21/2025 |
| 4.7.1 | 13 | 03/21/2025 |
| 4.6.7 | 13 | 03/21/2025 |
| 4.6.4 | 13 | 03/21/2025 |
| 4.6.3 | 13 | 03/21/2025 |
| 4.6.2 | 13 | 03/21/2025 |
| 4.6.1 | 13 | 03/21/2025 |
| 4.6.0 | 13 | 03/21/2025 |
| 4.5.0 | 12 | 03/21/2025 |
| 4.4.0 | 13 | 03/21/2025 |
| 4.3.0 | 13 | 03/21/2025 |
| 4.2.0 | 13 | 03/21/2025 |
| 4.1.0 | 13 | 03/21/2025 |
| 4.0.6 | 13 | 03/21/2025 |
| 4.0.5 | 13 | 03/21/2025 |
| 4.0.4 | 13 | 03/21/2025 |
| 4.0.3 | 13 | 03/21/2025 |
| 4.0.2 | 13 | 03/21/2025 |
| 4.0.1 | 13 | 03/21/2025 |
| 4.0.0 | 13 | 03/21/2025 |
| 4.0.0-pre9.10 | 13 | 03/21/2025 |
| 4.0.0-pre9.9 | 13 | 03/21/2025 |
| 4.0.0-pre9.8 | 14 | 03/21/2025 |
| 4.0.0-pre9.7 | 13 | 03/21/2025 |
| 4.0.0-pre9.6 | 13 | 03/21/2025 |
| 4.0.0-pre9.4 | 13 | 03/21/2025 |
| 4.0.0-pre9.3 | 13 | 03/21/2025 |
| 4.0.0-pre9.2 | 13 | 03/21/2025 |
| 4.0.0-pre9.1 | 13 | 03/21/2025 |
| 4.0.0-pre9 | 13 | 03/21/2025 |
| 4.0.0-pre8 | 13 | 03/21/2025 |
| 4.0.0-pre7 | 13 | 03/21/2025 |
| 4.0.0-pre6 | 13 | 03/21/2025 |
| 4.0.0-pre5 | 13 | 03/21/2025 |
| 4.0.0-pre4 | 14 | 03/21/2025 |
| 4.0.0-pre3 | 13 | 03/21/2025 |
| 4.0.0-pre2 | 14 | 03/21/2025 |
| 4.0.0-pre | 13 | 03/21/2025 |
| 3.3.3 | 14 | 03/21/2025 |
| 3.3.2 | 13 | 03/21/2025 |
| 3.3.1 | 12 | 03/21/2025 |
| 3.3.0 | 13 | 03/21/2025 |
| 3.2.1 | 13 | 03/21/2025 |
| 3.2.0 | 13 | 03/21/2025 |
| 3.1.0 | 13 | 03/21/2025 |
| 3.0.1 | 13 | 03/21/2025 |
| 3.0.0 | 13 | 03/21/2025 |
| 3.0.0-pre | 13 | 03/21/2025 |
| 2.0.0 | 13 | 03/21/2025 |
| 1.1.2349.61993 | 13 | 03/21/2025 |
| 1.1.2225 | 13 | 03/21/2025 |
| 1.1.1589.5942 | 13 | 03/21/2025 |
| 1.1.1589.5941 | 14 | 03/21/2025 |
| 1.1.1579.5793 | 14 | 03/21/2025 |
| 1.1.1508.5724 | 14 | 03/21/2025 |
| 1.1.1456.5398 | 13 | 03/21/2025 |
| 1.1.1161.61462 | 14 | 03/21/2025 |
| 1.1.1160.61462 | 13 | 03/21/2025 |