* Documentation/Changelog.txt, Documentation/Release.txt, Source/Compatibility/Properties/AssemblyInfo.cs, Source/Examples/Properties/AssemblyInfo.cs, Source/GLControl/Properties/AssemblyInfo.cs: Bumped version numbers and updated documentation in preparation of 0.9.9-3 release.
* Source/Examples/OpenGL/1.1/DisplayLists.cs, Source/Examples/OpenGL/1.1/ImmediateMode.cs, Source/Examples/OpenGL/1.1/Textures.cs, Source/Examples/OpenGL/1.1/VertexArrays.cs, Source/Examples/OpenGL/1.1/VertexLighting.cs, Source/Examples/OpenGL/1.5/VertexBufferObject.cs, Source/Examples/OpenGL/3.0/HelloGL3.cs, Source/Examples/OpenGL/EXT/FramebufferObject.cs, Source/Examples/OpenGL/EXT/GeometryShader.cs, Source/Examples/OpenGL/EXT/GeometryShaderAdvanced.cs, Source/Examples/OpenGL/GLSL/JuliaSetFractal.cs, Source/Examples/OpenGL/GLSL/SimpleGLSL.cs, Source/Examples/OpenGLES/1.1/SimpleWindow.cs, Source/Examples/OpenGLES/2.0/SimpleWindow20.cs, Source/Examples/OpenTK/Fonts/FontRenderingAdvanced.cs, Source/Examples/OpenTK/GameWindow/FullscreenAntialias.cs, Source/Examples/OpenTK/GameWindow/SimpleWindow.cs, Source/Examples/OpenTK/Test/GameWindowStates.cs, Source/OpenTK/GameWindow.cs, Source/QuickStart/Game.cs: OnLoad/OnUnload should be protected, not public, to conform with the class
library design guidelines. This issue was supposed to be fixed in 0.9.9-2, but was apparently overlooked.
* Source/OpenTK/Platform/Windows/WinGLNative.cs: Trap WM_SYSCHAR to avoid generating system beeps on Alt+[Key] combinations.
2009-10-19 the_fiddler
* Source/OpenTK/Platform/Windows/WinGLNative.cs, Source/OpenTK/WindowBorder.cs, Source/OpenTK/WindowState.cs: Revert WindowBorder and WindowState value changes.
Use Nullable types to detect when WindowBorder and WindowState is not set.
* Source/OpenTK/Platform/X11/X11GLNative.cs: * X11GLNative.cs: Added more defensive checks for the existence of the window before issuing XDestroyWindow.
Do not allow multiple calls to XDestroyWindow once the shutdown sequence has been initialized. Fixes issue [#1190]: "GameWindow dispose on linux".
* Source/OpenTK/Platform/X11/X11GLNative.cs: * X11GLNative.cs: Correctly set all necessary ClientMessage fields
for XSendEvent call in Close() method.
* Source/OpenTK/Platform/X11/Functions.cs: * Functions.cs: Added helper function for XSendEvent, so that we
don't need to cast the EventMask to IntPtr.
* Source/OpenTK/Platform/X11/X11GLContext.cs: * X11GLContext.cs: Correctly set GraphicsMode in constructor (resolves issue [#1175]: "Graphics] GraphicsContext.GraphicsMode property returns null on Linux").
* Source/OpenTK/OpenTK.dll.config: Added dllmap for OpenCL on Linux.
* Source/OpenTK/Platform/X11/Functions.cs, Source/OpenTK/Platform/X11/Structs.cs: * Functions.cs: Added a number of missing methods relating to
XWMHints, images, pixmaps and root windows.
Implemented Create[Mask|Pixmap]FromImage methods.
* Structs.cs: Added ImageFormat enum.
* Source/OpenTK/Graphics/OpenGL/GLHelper.cs: Route overloads through GL class instead of calling the Delegates directly. Ensures that automatic error checking will work as expected.
* Source/Examples/OpenTK/Test/GameWindowStates.cs: Indicate whether the window is focused or not.
* Source/OpenTK/WindowBorder.cs, Source/OpenTK/WindowState.cs: Treat 0 as a special value (necessary for internal purposes).
* Source/OpenTK/Platform/Windows/WinGLNative.cs: Focused property now returns correct values. FocusedChanged event is now correctly raised.
* Source/OpenTK/Platform/Windows/WinGLNative.cs: Improved handling if WindowBorder changes when the window is WindowState is Maximized or Fullscreen. Maximized windows now correctly retain their maximized state, while fullscreen windows do not become non-fullscreen when their border is modified.
* WinGLNative.cs: fixed handling of WindowState.Maximized when WindowBorder is Hidden.
WindowStateChanged events are now correctly raised on all state changes.
2009-10-17 the_fiddler
* Source/OpenTK/Platform/Windows/WinGLNative.cs: Do not print window title to debug stream inside the set_Title property. Instead, log an error only when the method call fails. Fixes issue [#1239]: "Debug.Print in Title property".
Added check for the existence of override elements before trying to use them (avoids potential null reference exception).
Regenerated bindings using the latest version of the generator.
* Source/Bind/Structures/Function.cs, Source/OpenTK/Graphics/OpenGL/GL.cs: Fixed issue [#1240]: "Generic ref and out wrappers do not copy results to the reference parameter", by assigning the GCHandle.Target back to the reference parameter.
* Source/Bind/Specifications/ES20/overrides.xml, Source/OpenTK/Graphics/ES20/Core.cs, Source/OpenTK/Graphics/ES20/Delegates.cs, Source/OpenTK/Graphics/ES20/ES.cs: Added override for GetProgramInfoLog: infolog parameter should have a flow of 'out'.
2009-10-15 the_fiddler
* Source/GLControl/GLControl.cs: Added workaround for the "Resize event called before GraphicsContext is ready" issue.
* Source/OpenTK/Graphics/OpenGL/GLHelper.cs: Fixed GetDouble implementation to return correct values (should call GetDouble not GetFloat!) Fixes issue [#1235]: "Matrix4d wrong value on GL.GetDouble".
Modified WinGLNative.cs to use Icon.ExctractAssociatedIcon() to set the application icon (needs work).
* Source/OpenTK/Platform/Windows/API.cs, Source/OpenTK/Platform/Windows/WinGLNative.cs: Added support for setting the application (use SHGetFileInfo to retrieve the correct icon and set it when constructing a new window).
* Source/OpenTK/Platform/Windows/WinGLNative.cs: Restore previous window size when leaving fullscreen mode.
* Source/OpenTK/Math/Matrix4.cs, Source/OpenTK/Math/Matrix4d.cs: Corrected documentation on the M42 property. Fixes issue [#1227]: "Matrix4.M42 documentation".
* Source/QuickStart/Game.cs: Fixed documentation on the event args for the Resize event.
Ensure that we call the base method when we override an On* method.
* CL/CLGenerator.cs: Made CLGenerator inherit from ESGenerator. Reduces code duplication significantly.
* Source/Bind/Specifications/CL10/signatures.xml: * Specifications/CL10/signatures.xml: Updated specs with information on enum types (long or int).
* Source/Converter/ESCLParser.cs: * ESCLParser.cs: OpenCL bitfileds are defines as long, not int. Added 'type' attribute to enums, which can be 'long' or 'int'.
2009-10-07 the_fiddler
* Source/OpenTK/Platform/Windows/WinGLNative.cs: Post a close message instead of destroying the window outright, when the user calls the Close() method. Ensures that the user can stop the exit sequence through the IsClosing event.
* Source/OpenTK/GameWindow.cs: * GameWindow.cs: Improved implementation of GameWindow.Exit(). It should now be possible to cancel the exit through the IsClosing event.
* Source/OpenTK/GameWindow.cs, Source/OpenTK/Platform/Windows/WinGLNative.cs: Generate Update/ResizeFrame events whenever the window is moved or resized. Partially fix for issue [#1218]: "[NativeWindow] Avoid modal loop during window resize/movement".
* Source/OpenTK/GameWindow.cs: Refactored and simplified the Run() loop.
* Source/OpenTK/Platform/Windows/WinGLNative.cs: Added timer callback to WM_ENTERSIZEMOVE messages to avoid stalling the rendering during the modal size/move loop (which occurs when the user clicks the window bar or borders). Still need to find a way to notify the frontend (GameWindow) to process queued up UpdateFrame/RenderFrame events.
* Source/OpenTK/Platform/Windows/API.cs: Added SetTimer, KillTimer and TimerProc bindings.
* Source/OpenTK/Graphics/OpenGL/GLHelper.cs: * OpenGL/GLHelper.cs: Removed static GetAddress method in favor of
implementation inherited from GraphicsBindingsBase.
Fixed parameters in double versions of BaryCentric() (should be double instead of float).
* Source/OpenTK/Math/Vector2.cs, Source/OpenTK/Math/Vector2d.cs, Source/OpenTK/Math/Vector3.cs, Source/OpenTK/Math/Vector3d.cs, Source/OpenTK/Math/Vector4.cs, Source/OpenTK/Math/Vector4d.cs: Obsoleted Scale() instance method (reason: redundant. Mult()/Multiply() instance/static methods can be used to achieve the same effect).
* Source/OpenTK/Math/Vector2.cs, Source/OpenTK/Math/Vector2d.cs, Source/OpenTK/Math/Vector3.cs, Source/OpenTK/Math/Vector3d.cs, Source/OpenTK/Math/Vector4.cs, Source/OpenTK/Math/Vector4d.cs: Added vector overloads to Multiply and Divide methods.
Renamed Sub to Subtract, Mult to Multiply and Div to Divide (reason: conform with the class library design guidelines).
Obsoleted instance Add, Sub, Mult and Div methods in favor of static ones (reason: reduce API bloat, they are completely redudant).
* Source/OpenTK/KeyPressEventArgs.cs: Made KeyChar property setter internal instead of private. Useful for reusing KeyPressEventArgs structures (instead of allocating a new one on each and every character event).
* Source/OpenTK/IGameWindow.cs: Marked IGameWindow as public.
2009-09-25 the_fiddler
* Source/OpenTK/Platform/X11/X11GraphicsMode.cs: * X11GraphicsMode.cs: Protect the mode queries with XLockDisplay()/XUnlockDisplay().
2009-09-19 the_fiddler
* Source/OpenTK/GameWindow.cs: Ensure the GameWindow is visible when the Run() method is called.
* Source/OpenTK/Platform/Windows/API.cs, Source/OpenTK/Platform/Windows/WinGLNative.cs: Renamed IsWindowVisisble to the correct IsWindowVisible.
2009-09-18 the_fiddler
* Source/GLControl/GLControl.cs: Setting VSync mode should not force control creation. Fixes issue [#1071]: "Not firing Load event for GLControl."
2009-09-13 the_fiddler
* Source/OpenTK/Platform/X11/X11KeyMap.cs: * X11KeyMap.cs: Removed dependency on System.Windows.Forms.
2009-09-10 the_fiddler
* Source/GLControl/GLControl.cs: * GLControl.cs: Added a public getter for the IWindowInfo of the GLControl.
* Source/Examples/OpenGL/EXT/GeometryShaderAdvanced.cs: Fixed several code instances that relies on C# 3.0 features.
* Source/Bind/Specifications/GL2/enumext.spec, Source/Bind/Specifications/GL2/gloverrides.xml, Source/OpenTK/Graphics/OpenGL/GL.cs, Source/OpenTK/Graphics/OpenGL/GLCore.cs, Source/OpenTK/Graphics/OpenGL/GLDelegates.cs, Source/OpenTK/Graphics/OpenGL/GLEnums.cs: Updated tokens for ARB_depth_clamp, ARB_vertex_array_bgra, ARB_seamless_cube_map, ARB_provoking_vertex, ARB_draw_elements_base_vertex which where promoted in version 3.2. Fixes issue [#1146]: "[GL3.2] Multiple (minor) corrections".
* Source/Bind/Specifications/GL2/enumext.spec, Source/OpenTK/Graphics/OpenGL/GLEnums.cs: Updated tokens for ARB_geometry_shader4 (promoted in Version 3.2). Fixes issue [#588]: "ARB_geometry_shader4".
* Source/Bind/Specifications/GL2/enumext.spec, Source/Bind/Specifications/GL2/gloverrides.xml, Source/OpenTK/Graphics/OpenGL/GL.cs, Source/OpenTK/Graphics/OpenGL/GLCore.cs, Source/OpenTK/Graphics/OpenGL/GLDelegates.cs, Source/OpenTK/Graphics/OpenGL/GLEnums.cs: Updated tokens for ARB_texture_multisample (promoted in Version 3.2). Fixes issue [#1151]: "ARB_texture_multisample".
* Source/Bind/GL2/Generator.cs: Report an error if a constant does not contain either '=' or 'use' in its definition.
+ 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.
+ Fixed Alc.CaptureSamples signature and added convenience overloads.
+ Graphics
+ Full OpenGL 3.1 support.
+ All instances of Version* enums have now been replaced. Only a few Version12Deprecated enums remain, pertaining to the ARB_imaging subset.
+ Debug builds now throw an exception whenever an OpenGL error is encountered. Simplifies debugging.
+ GraphicsContext.CreateDummyContext() no longer causes a NullReferenceException.
+ Several new helpers for getting matrices, vectors or setting the viewport.
+ Input
+ Keyboard repeat is now turned off on X11.
+ Mouse deltas are now reported correctly during mouse movements..
+ Platform
+ Device contexts are no longer leaked on Windows. This significantly improves stability of long-running processes and processes with multiple OpenGL contexts.
+ Removed ExitAsync() method - use Exit() instead.
+ Graphics
+ Fixed version strings in GL.SupportsExtension().
+ Input
+ Added support for the MouseDevice.Move and .WheelChanged events and improved MouseDevice interface (Issue: "Fix MouseDevice.Move", http://www.opentk.com/node/652).
+ Fixed TextPrinter bug with colors in high quality (Issue: "TextPrinter (TextQuality.High) failure (with patch to fix)", http://www.opentk.com/node/660)
+ New transformation to OpenGL enums follows .Net naming conventions (PascalCase, no_underscores).
+ Void* parameters are turned to IntPtr, to improve interop with .Net BCL methods (e.g. BitmapData.Scan0).
+ Now generates only one ref/array/pointer overload for each function, not all possible permutations. Brings Glu down to ~40KB of code (was ~3MB before). Improves compilation times.
+ Improved layout of generated code. Removed some generated local variables (improves speed).
+ Renamed Windows.API to Windows.Functions, to match X11.Functions.
+ Added many new functions to both Windows and X11 bindings.
+ Improved inline documentation to Windows and X11 bindings.
+ GameWindow
+ Added timing logic to the Run() function. The target UpdateFrame and RenderFrame rates can be set independently. The GameWindow will try to maintain the UpdateFrame rate, dropping RenderFrames if necessary.
+ GameWindow.Run() now releases unused CPU time.
+ Improved event firing. Resize event called only once now. No need for users to call base.OnXYZ functions.
+ Corrected an issue where GameWindow could could fail to shutdown properly under Windows, due to WinRawInput driver eating up the CLOSE event.
+ GameWindow exposes only one Mouse and Keyboard now. Multiple keyboard/mouse support is provided through the InputDriver, but is still very much a WIP, so better to use the default Keyboard and Mouse devices reported by GameWindow.
+ Added the GameWindow.Title property, which can be used to retrieve or set the GameWindow caption.
+ Added new constructors and CreateWindow overloads.
+ Greatly improved documentation.
+ Internal layout changes, and general performance optimizations.
+ Input
+ Mouse input support through WinRawMouse and X11Mouse drivers.
- Mouse.Wheel and Mouse.WheelDelta are broken on both platforms.
- WinRawMouse is very resource intensive. Expect great performance improvements in the next releases.
+ Added some missing Keyboard keys.
+ Math
+ Added Vector2, Vector3 and Vector4 structs, and basic vector math functions. You can pass these structs directly to functions expecting float*, by casting to (float*).
+ Improved ExampleLauncer behavior. Examples are now launched in the main ExampleLauncher thread, and the ExampleLauncher becomes invisible whenever and example is active.
+ Improved example names inside the ExampleLauncher. Renamed some examples to better reflect their contents.
+ Added two new tutorials: 'T01: Simple Window' and 'T02: Resizable Window'
+ Updated the DrawCube() immediate mode functions to use System.Drawing.Colors
+ Resolved issue where 'T10: GLSL Cube' example failed with an NRE when compiled with Mono 1.2.x
+ Added 'W03: Extensions' example.
+ Added 'T04: Lit Cube' example (still needs work).
+ Added new, (more) cross-platform build system, written on C#. This takes the place of the scripts and batch files used to compile OpenTK up till now.
+ The GLContext class now contains all needed code for mode switching.
+ The Framework class structure has been updated. Less code is duplicated between GLContext and Framework now.
+ Three new examples have been added: OpenGL.Basic.Lesson01 (equivalent to OpenGL.GLSL.Lesson01 without the shaders), OpenGL.Basic.QueryDisplayModes which shows a list of all available display modes, and OpenGL.Basic.NoFramework which shows how to use OpenGL Contexts directly (without relying on the framework).
+ SGIX_icc_texture is still commented out, while enums use it.
+ LightProperty is still used by constants (the correct enum is LightParameter).
+ I think I should contact someone at the Khronos group about these. For the time being I worked around them, by adding a special case for LightProperty in the translator, and adding the SGIX enum to the missing parameters.
+ See also: http://www.haskell.org/HOpenGL/spec_bugs.html (lots of useful information on that site).
+ Corrected the crash error in Release mode (it was caused by trying to Marshal the System.Windows.Forms.Message struct to PeekMessage - adding my own Message struct corrected the issue).
+ Corrected the call to glShaderSource GLSL.Lesson01. Now the correct number is passed to the count parameter, while the null parameter was changed to IntPtr.Zero (Mono now no longers fails in this call).
+ Updated the GLSL.Lesson01 example to use GetShaderInfoLog on compilation failure.
+ OpenTK.OpenGL.Bind 0.7.5.1 -> 0.7.5.2 (see Bind changelog for more information)
+ Full Mono support under windows.
OpenTK 0.3.2 -> 0.3.3
+ OpenTK.OpenGL.Bind 0.7.5 -> 0.7.5.1 (see Bind changelog for more information)
+ Added the GLForm class which sets the base for cross-platform screen, context and keyboard handling.
+ Can now change between fullscreen and windowed modes.
+ Temporarily removed all examples except for GLSL.Lesson01, which has been updated to use the new GLForm class.
OpenTK 0.3.1 -> 0.3.2
+ OpenTK.OpenGL.Glu: Eliminated the temporary IntPtr variable in the GetString and ErrorString functions.
+ Specifications.cs_types.txt: Changed types in order to be CLS compliant.
+ OpenTK.OpenGL.Bind 0.7.4 -> 0.7.5
+ Added the GLSL.Lesson01 example.
OpenTK 0.3.0 -> 0.3.1
+ Updated the binding generator to version 0.7.4, based on the work done for Tao.
+ Updated the Context load functions. Now Context loads all functions are extensions, and the derived classes override this behavior as needed.
+ Changed the uint array used in the DisplayLists example to an int array.