the Fiddler's picture

The Open Toolkit library 0.9.9-2b

Download: opentk-0.9.9-2b.html
Size: 433 bytes
md5_file hash: 762803aa41d68aa715aed078c03d4750
First released: 6 September, 2009 - 09:50
Last updated: 6 September, 2009 - 09:59


This is the third preview release of what will become OpenTK 1.0. Major changes:

  • Added new OpenTK.Compatibility project to ensure compatilibility with older OpenTK and Tao projects.
  • Deprecated and merged OpenTK.Utilities into OpenTK.Compatibility.
  • Moved OpenTK.GLControl into its own project.
  • Added NativeWindow class and modified GameWindow to inherit from it.
  • Improved the build system and added support for signed assemblies.
  • Added complete OpenGL|ES support.
  • Recreated the OpenCL bindings using the binding generator.
  • Improved the math API.
  • Fixed all documentation warnings.
  • Improved implementations for GraphicsContext, GLControl, NativeWindow, GameWindow.
  • Added a large number of stability fixes and improved the behavior of OpenTK under buggy environments.

Please visit to report issues or request features.

[Resolved issues]

#566: Support for signed assembly
#775: Remove [In] [Out] attributes from the GL wrappers
#993: Possible bug in GraphicsContext.CreateDummyContext()
#1071: Not firing Load event for GLControl.
#1074: X11XrandrDisplayDevice on Xming ---> Argument is out of range.
#1081: GameWindow inconsistent use of Width/Height on Windows
#1082: GameWindow Left/Top screen position
#1084: [OpenGL] ARB_imaging subset cleanup
#1089: TextPrinter is affected by TextureGen* and TextureEnvMode
#1101: OpenTK.Bind project refactoring
#1119: [Compute] "CL.GetPlatformIDs" missing "s"
#1121: GraphicsContext fails with KeyNotFoundException on SVN trunk
#1126: Bad report/count of online users
#1131: [Math] add Quaternion scaling (easy)
#1138: GLControl GraphicsContextException
#1140: ColorAttachment values on ReadBufferMode
#1141: Unhandled exception in GlControl possible bug in rev 2207
#1143: Fix all XML documentation warnings

[Known issues]

  • Mono 2.2 and 2.4 fail to compile this release (bug report: Please compile with Mono 2.0, 2.4.2+ or use the precompiled binaries.
  • OpenTK.Graphics.TextPrinter fails to render text with newlines or a layout rectangle on Mono. This is a Mono GDI+ bug.
  • Example documentation may not show up correctly when running on Mono. This is a Mono issue with RTF parsing.
  • Joystick input is not supported on Mac OS X at this time.
  • OpenGL 3.0 is not supported on Mac OS X at this time.
  • The new GameWindow implementation may not function correctly on Mac OS X.
  • The new GraphicsContext implementation may not function correctly on Mac OS X.
  • MonoDevelop fails to sign assemblies (bugs and

[API changes]

Please note that binary compatibility is not preserved between beta releases.


If you are upgrading from an earlier version of OpenTK, please add a reference to OpenTK.Compatibility and OpenTK.GLControl (if you are using the GLControl).

1. OpenTK.Utilities assembly no longer exists.
Solution: add a reference to OpenTK.Compatibility.

2. OpenTK.GLControl no longer exists in OpenTK.dll.
Solution: add a reference to OpenTK.GLControl.

3. OpenTK.Graphics.GL has been moved to OpenTK.Graphics.OpenGL.GL.
Solution: add a reference to OpenTK.Compatibility or change the relevant qualifiers from OpenTK.Graphics to OpenTK.Graphics.OpenGL or add a using directive for OpenTK.Graphics.OpenGL.

4. OpenTK.Audio.AL has been moved to OpenTK.Audio.OpenAL.AL.
Solution: add a reference to OpenTK.Compatibility or change the relevant qualifiers from OpenTK.Audio to OpenTK.Audio.OpenAL or add a using directive for OpenTK.Audio.OpenAL.

5. GameWindow events are no longer raised if the relevant On* method is overriden.
Solution: ensure that you call "base.On*" when you override one of the "On*" methods (e.g. OnLoad).

6. GameWindow OnLoad and OnUnload methods are now protected instead of public.
Solution: change the access qualifier to protected for overriding methods.

7. DisplayResolution and DisplayDevice classes have been moved from OpenTK.Graphics into the root OpenTK namespace.
Solution: change the relevant using directives and qualifiers from OpenTK.Graphics to OpenTK.

8. TextPrinter is marked as deprecated.
Solution: there is no solution at this time. The TextPrinter will continue to work as expected but is need of a dedicated maintainer.

9. Tao.OpenGl, Tao.OpenAl and Tao.Platform.Windows.SimpleOpenGlControl are marked as deprecated.
Solution: use core OpenTK classes if possible. The Tao namespaces are only offered for compatibility with existing applications and new projects should avoid using them.


1. The OpenTK.Math namespace no longer exists. Please replace all references by 'OpenTK'. This can be easily achieved with the following Search & Replace operations:

'using OpenTK.Math;' -> 'using OpenTK;'
'OpenTK.Math.' -> 'OpenTK.'

2. OpenCL bitfields are now mapped to 'long' instead of 'int'. Casts from [Flags] enums to 'int' may now fail. Please avoid such casts or use 'long' instead.


1. GameWindow.Resize and GameWindow.OnResize have changed signatures:

ResizeEventHandler Resize(object, ResizeEventArgs) -> EventHandler Resize(object, EventArgs)
OnResize(ResizeEventArgs) -> OnResize(EventArgs)

Please replace all instances of "ResizeEventHandler" by "EventHandler and replace "e.Width" / "e.Height" by "this.Width" and "this.Height".

2. All GameWindow.On* functions are now 'protected' instead of 'public'.

Please mark all relevant overrides as 'protected'.

3. Glu is now marked as deprecated.

Please use OpenTK instead.

4. OpenTK.Input.[Keyboard|Mouse|Joystick]Device are marked as obsolete.

Please continue using these classes normally. A future update will provide a much more versatile input API.


[Legend: complete('+') | WIP('*') | missing('-')]
 OpenTK 0.9.9-1 -> 0.9.9-2
+ General
    + Changed project layout.
    + Bind project now relies on C# 3.0 / .Net 3.5.
    + Removed OpenTK.Utilities project.
    + Added OpenTK.Compatibility project.
    + Added OpenTK.GLControl project.
    + Improved build system.
    + OpenTK can now be strongly-named.
+ Generator
	+ Bind
		+ Cleaned up using directives and removed unnecessary qualifiers.
		+ Added support for specs in XML form.
		+ Added OpenGL|ES and OpenCL specs in XML form.
		+ Fixed handling of output paths in the ES generator.
		+ Fixed several instances that ignored the generator settings.
		+ Improved handling of pointer/reference overloads.
		+ Ensured that methods are written in lexicographic order.
	+ Converter
		+ Added support for OpenGL|ES extensions.
		+ Fixed several OpenGL|ES extensions from Nvidia that did not list parameter names.
		+ Fixed several other corner cases in the conversion process.
+ OpenTK
	+ Added support for signed assemblies.
    + Fixed all documentation warnings.
    + Moved DisplayDevice and DisplayResolution classes to the root OpenTK namespace.
    + Audio
		+ Moved OpenAL flat API to the OpenTK.Audio.OpenAL namespace.
		+ Removed SoundData class and OpenAL overloads using this class.
    + Build
        + Prebuild.exe and the Prebuild.xml are now distributed as an embedded resources.
        + Improved help and usage instructions.
        + Added support for strong names.
        + Removed obsolete build options and targets (nant, monodevelop 1, sharpdevelop 1).
        + Split OpenTK into three distinct solution files: OpenTK, Generator and QuickStart.
    + Compute
		+ Fixed a TypeLoadException issue in the various handle wrappers that could result prevent OpenTK from loading.
		+ OpenCL
			+ Moved OpenCL flat API to the OpenTK.Compute.OpenCL namespace.
			+ Regenerated the OpenCL using Bind.
			+ Updated to the latest version of the specs.
			+ Added missing 's' to 'CL.GetPlatformIDs'.
	+ NativeWindow
		+ New NativeWindow implementation of INativeWindow members.
		+ Connected several internal INativeWindow events to the public NativeWindow interface.
	+ GameWindow
		+ Modified to inherit from NativeWindow.
		+ Improved event handling.
		+ Removed ExitAsync method. GameWindow must be closed by the thread it originated from.
    + Graphics
		+ GraphicsContext
			+ Refactored internal IGraphicsContext implementations to reduce code duplication.
			+ GraphicsContext no longer accesses OpenGL or OpenGL|ES bindings directly and can work independently.
			+ Added support for EGL context implementations.
			+ Added GraphicsContextFlags.Embedded to GraphicsContext constructor, to allow creation of EGL contexts. Tested on the OpenGL|ES emulator from AMD.
			+ Fixed NullReferenceException in GraphicsContext.CreateDummyContext.
			+ Fixed potential KeyNotFoundException on X11.
		+ OpenGL
			+ Moved OpenGL flat API to the OpenTK.Graphics.OpenGL namespace.
			+ Replaced all occurences of Version12 and Version12Deprecated enums with specific enums.
			+ Cleaned up tokens for the ARB_imaging subset: EXT_convolution, EXT_histogram and SGI_color_table.
			+ Added missing ColorAttachmenti tokens to ReadBufferMode.
			+ Reduced duplication and improved initialization and extension loading code for OpenGL and OpenGL|ES.
			+ Removed methods that rely on OpenGL version checks, such as GL.SupportsExtension(). Programs should use one of the documented ways of checking for OpenGL extension support (GL.GetString(StringName.Extensions) on versions <= 2.1 and GL.GetString(StringName.Extensions, n) on versions >= 3.0).
			+ Removed GL.Load() and GL.LoadDelegate() methods.
			+ Removed unnecessary [In] and [Out] attributes.
		+ OpenGL|ES
			+ Added support for OpenGL|ES extensions.
			+ Regenerated the bindings using the latest version of Bind.
			+ Removed unnecessary [In] and [Out] attributes.
    + Input
        + Removed deprecated code.
        + Added more stubs for the static input classes.
    + Math
		+ Quaternions can now be scaled by scalars.
		+ Cleaned up parameter names and ensured they match the documentation.
    + Platform
		+ Removed Utiilties.CreateWindowInfo method. Please use one of the platform-specific Utilities.Create[X11|Windows|Carbon|Dummy]WindowInfo methods.
		+ Removed all deprecated methods from the Utilities class.
		+ X11
			+ Improved handling of invalid XRandR values reported by some drivers. This allows OpenTK to run on Xming.
+ OpenTK.Compatibility
	+ Added support for Tao.OpenGl, Tao.OpenAl and Tao.Platform.Windows.SimpleOpenGlControl (through OpenTK.GLControl).
	+ Added old math API from OpenTK.Math.
	+ Added old OpenGL API from OpenTK.Graphics.
	+ Added old OpenAL API from OpenTK.Audio.
	+ Added OpenTK.Graphics.TextPrinter.
	+ Moved GDI+ bindings to this project.
	+ TextPrinter
		+ Reset TextureGen, TextureEnvMode and lighting before rendering text.
+ OpenTK.GLControl
	+ Moved to different project, to reduce reliance of core OpenTK on Windows.Forms.
	+ Moved Windows.Forms-specific code from OpenTK.Platform.Utilities to OpenTK.GLControl.
+ OpenTK.Utilities
	+ Merged project into OpenTK.Compatibility.