Synced trunk with the 1.0 beta-1 release.

This commit is contained in:
the_fiddler 2009-11-10 09:22:46 +00:00
commit 3ca219953d
9 changed files with 392 additions and 61 deletions

View file

@ -1,4 +1,315 @@
---------------------------
------------------------------
OpenTK 0.9.9-3 -> 1.0 beta-1
------------------------------
2009-11-10 the_fiddler
* Disabled CL10, ES10 and ES11 bindings which were not finalized in
time for OpenTK 1.0.
* Updated documentation for release.
* Color4Serialization example now correctly prints its output
messages.
* Color4(byte, byte, byte, byte) constructor now correctly
normalizes values to the 0.0 - 1.0 range.
2009-11-09 the_fiddler
* Added keyfiles to ignore list.
* Fixed keyfile handling in Visual Studio.
* Updated ignore rules.
* Updated ignore rules.
* Branched for 1.0 release.
* Fixed a large number of recurring spelling mistakes in
documentation (patch by iRBiS). Fixes issue [#1341]: "Vector4
constructor describes w component as z component + other spelling
corrections".
* Fixed documentation which describes w components as z components
(patch by iRBiS).
* Updated ignore lists.
2009-11-09 kanato
* MacOS: Hack for AGL to have access to the display device
specified when a NativeWindow is created.
* MacOS: Detect display boundaries so created windows are placed in
the right spot.
* MacOS: Fix event from user clicking close box to properly report
that window doesn't exist anymore.
* Mac OS X Fix for GameWindow to call glContext.Update when resized
2009-11-08 the_fiddler
* Added System.Drawing reference back to QuickStart project (see
previous commit).
* Disabled OpenTK.Point, Size and Rectangle structures that were
meant to replace their System.Drawing implementations until the
correct course of action can be determined. This change is too
disruptive to existing applications, especially if they are also
using Windows.Forms (see discussion here:
http://www.opentk.com/node/1348).
* Don't display window by default, unless "Visible = true" is
called. Allows the creation of invisible windows for secondary
GraphicsContexts.
* Added a second terminating 0 to attribute list, trying to work
around issue [#1352]: "Occasional AccessViolationExceptions when
creating the GLControl".
2009-11-07 the_fiddler
* Added system-defined colors.
Added and improved constructors (more versatile).
Added ToArgb() method for improved System.Drawing.Color interop.
* Use SHOW command instead of SHOWNORMAL when making a window
visible, since SHOWNORMAL will un-maximize a fullscreen or
maximized window.
Do not force an invisible window to become visible when modifying
its state or borders.
* Always set the DisplayDevice.Bounds to a correct value. Fixes
issue [#1339]: "DisplayDevice.Bounds not set".
* Do not check for an X server if we detect Mac OS X. Should solve
issue [#1338]: "Running apps in Mac OSX start a application
called X11".
2009-11-06 the_fiddler
* Update the context when the native window is resized.
* MacOS may have an X server installed. Prefers the native
Carbon/Quartz platform driver over X in this case (same issue as
rev. 2465).
* Correctly set the primary device in the DisplayDevice
constructor.
* MacOS can have an X server installed. Modified the code so that
it prefers the native Carbon/Quartz platform driver over X in
this case.
* Fixed spelling of hertz and fps. Fixes issue [#1333]: "Spelling
of SI units in documentation and captions". Patch by iRBiS.
* Return proper CarbonWindowInfo instance instead of
DummyWindowInfo.
* * Rectangle.cs: Fixed ToString formatting code.
* * Platform/Windows/WinDisplayDevice.cs:
* Platform/MacOS/QuartzDisplayDeviceDriver.cs: Updated to use the
new
DisplayDevice constructors.
* Platform/X11/X11XrandrDisplayDevice.cs: Query Xinerama for the
exact
bounds of each display device, if available.
Use global X lock to protect from multithreaded access.
* * DisplayDevice.cs: Made DisplayDevice properties settable
internally (simplifies device detection code).
Bounds property is now independent of the default resolution.
* DisplayResolution.cs: Obsoleted the Bounds property, as this
becomes
invalid as soon as the resolution of any display device is
changed.
2009-11-05 the_fiddler
* * X11GLNative.cs: Convert from ASCII to the default encoding
before generating KeyPress events (allows support for simple
scripts that do not use composition.)
* * X11GLNative.cs: Implemented KeyPress event (no support for
input
methods yet).
* Functions.cs: Added XLookupString and XRefreshKeyboardMapping
methods for simple ANSI text input.
2009-11-04 the_fiddler
* Removed System.Drawing dependency from QuickStart.
* Added missing TitleChanged event.
* Removed unused code.
* Cleaned up deprecated methods.
* Cleaned up a large number of documentation issues.
* Updated deprecation message with specific instructions on how to
solve the issue.
* Added helper overloads for OpenTK.Point/Rectangle structures.
* Enabled System.Drawing.Point/Size/Rectangle replacements.
* Refactored timer installation/removal into their own methods.
* Added simpler constructor overload for external GraphicsContexts.
* Don't forget to load all bindings when constructing an external
context - this constructor was added for precisely this reason,
after all.
* Deprecated the LoadAll() method in favor of the new
GraphicsContext constructors.
* Added missing base.On* calls.
* Support external EGL contexts.
* Added missing documentation to GraphicsContext constructor.
* Renamed internal BindingsBase.LoadAll/Load methods to
LoadEntryPoints/LoadEntryPoint, in order to avoid name clashes
with the static GL.LoadAll() method.
Added GraphicsContext() constructor that takes an existing, valid
OpenGL context. This can be used for interop with third-party
toolkits which create the OpenGL context themselves.
* Set window title and icon.
* Doubled the size of particles and made them slightly faster.
* Cleaned up sample, added color and motion.
* Initialize threads before calling any other X methods.
* Removed unnecessary debugging messages from main loop.
* Added Toolkit.Init() method that can be used to configure the
underlying platform correctly when using OpenTK along with other
toolkits (e.g. OpenTK+GTK# on X, where GTK# does not initialize
threads).
* Default window style flags can be constants rather than static
readonly fields.
Throw an exception if we fail to register the window class, the
previous solution (check for "class already exists" error) was a
workaround for a threading issue that has been solved.
Set the small icon when registering the class.
* Now recognizes Resources folder for Examples project.
Added icon to Examples project.
* Added default icon to samples and the example browser.
* Added default application icon.
2009-11-03 the_fiddler
* Fixed ClassName and ModalLoopTimerId when constructing multiple
WinGLNative windows in parallel.
WinGLNative windows are now correctly focused when clicked on the
client area.
* Serialize context construction to avoid threading issues with
shared contexts.
* Avoid static caching of extension strings and improve
multithreading behavior - WGL extension checking is fast enough
that caching is not very useful.
* Added SyncRoot object to BindingsBase that can be used to protect
shared state in the various bindings.
* Fixed race condition in GraphicsMode.Default.
* No need to burn 100% CPU time just for a spinning cube!
(Especially important for the multithreading test, which opens
multiple such windows).
* Use new string(sbyte*) instead of Marshal.PtrToStringAnsi to
increase performance when calling GetString to retrieve the list
of available extensions.
* Implemented Tranform(Vector, Quaternion) overloads. Fixes issue
[#1028]: "[Math] Add vector transformation by quaternion".
* Deprecated Mult in favor of Multiply.
Modified operator * to use Multiply internally (reduces code
duplication).
* Fixed Vector3.Transform signature to return a Vector3, not a
Vector4. It was previously impossible to transform a Vector3
structure without intermediate conversions to Vector4.
* Modified Transform(ref Vector4, ref Matrix4, out Vector4)
overload to work correctly when the ref and out parameters point
to the same Vector4.
Modified Transform(Vector4, Matrix4): Vector4 to call the
reference overload internally. Faster and reduces code
duplication.
* Added missing TextureBuffer token to BufferTarget and
TextureTarget enums (promoted from ARB_texture_buffer_object).
Fixes issue [#1313]: "TextureBuffer target".
* Added type-safe parameters to FramebufferTexture (fixes issue
[#1303]: "[GL] fix FramebufferTexture parameters").
* Added multithreading test to verify GameWindow behavior with
multiple threads.
* * DocProcessor.cs: Remove any trailing newlines in XML docs.
Output
between Mono/Linux and .Net/Windows is now consistent.
2009-11-02 the_fiddler
* Use more aggressive xlib locking following the advice of the
multithreaded X manpages (needs work).
* Do not allow MakeCurrent() to change the display connection of
the context. This would result in an X error and the change
allows us to simplify shutdown/cleanup logic.
* * Matrix4d.cs: M44 should be 1.0 to conform with GL.Ortho().
Fixes issue [#1307]: "GL.Ortho behaves other than combination of
OpenTK.Matrix4d.CreateOrthographic and GL.MultMatrix".
* Qualify System.Drawing.Rectangle/Point/Size structs fully when
necessary, to avoid namespace clash with
OpenTK.Rectangle/Point/Size.
* Added experimental Icon and IconConverter implementations from
Mono.
Modified INativeWindow implementations to not qualify Icon class
fully, so we can change the implementation between System.Drawing
and OpenTK at will (using the EXPERIMENTAL #define).
* Improved interoperation with System.Drawing with new addition,
subtraction and implicit conversion operators, as well as
additional method overloads.
Only expose fields through public properties to allow for
parameter validation.
2009-11-01 the_fiddler
* Updated version numbers in preparation for release.
* Fixed an issue where "const unsigned [type] [pointer]" parameters
where not parsed correctly. Solves issue [#1300]: "[OpenCL]
Possible bug at CL.CreateProgramWithBinary".
* Added experimental OpenTK.Point/Size/Rectangle alternatives to
System.Drawing, to make OpenTK usable without referencing
System.Drawing (disabled by default, #define EXPERIMENTAL to
test). Modified a number of using directives and namespace
qualifiers to accommodate this change.
* Document that these APIs are incomplete.
2009-10-28 the_fiddler
* Merged es20 branch back into trunk.
* Initialize input vectors to random values.
Use smaller data blocks that can be verified visually.
Perform error checking when executing the kernel.
Wait for the command queue to finish before displaying the
results.
* Recognize and copy dds files as part of example resources.
* Renamed dds textures to not contain strange characters that
confuse Prebuild.
Added checks for extension support to SwizzledParallax sample.
* Return readonly IList<> instead of copying arrays of data.
2009-10-27 the_fiddler
* Track mouse enter/leave events.
* Implemented INativeWindow.MouseEnter/MouseLeave events on Win32
and X11.
* Generate UpdateFrame events even if TargetUpdateFrequency is 0.
According to the documentation, setting this value to 0 will
result in unconstrained UpdateFrame frequency. Fixes issue
[#1294]: "OnUpdateFrame function does not work with maximum
update rate".
2009-10-24 the_fiddler
* Do not qualify Stopwatch fully, to allow it to be overridden by
Minimal.cs if necessary.
* Provide dummy implementations for classes not available on the
iPhone.
* Plane.cs belongs to the 'old' structures.
* Merged Inertia's example and geometry branch,
2009-10-23 the_fiddler
* Fixed x86-specific ABI assumption (do not pass structure directly
when a pointer is expected). Patch by jonp.
* Added dllmap for OpenGL|ES on Mac OS X.
* Debug.WriteLine(object, string) does not work as intended (the
first parameter defines the category). Use Debug.Print instead.
* Fixed x86-specific ABI assumption (do not return structure
directly when a pointer is expected). Patch by jonp.
2009-10-22 the_fiddler
* Do not force control to create its handle in Resize event (the
designer places code that raises this event before the rest of
the events are hooked). Instead, suppress the event and raise it
once the handle is actually created.
2009-10-21 the_fiddler
* Set default class cursor to avoid invalid cursors when entering
the window.
* Added LoadCursor method.
Added CursorName enum (only default arrow cursor is defined for
now).
* Use StringBuilder.Capacity to specify the available buffer size
in OpenGL interop (StringBuilder.Length is invalid in this case).
Added workaround for Mono 1.9.1 issue, where StringBuilder return
truncated results when used in interop. Doubling
----------------------------
OpenTK 0.9.9-2b -> 0.9.9-3
----------------------------

View file

@ -1,24 +1,19 @@
The Open Toolkit 0.9.9-3 Beta
The Open Toolkit 1.0 beta 1
[Overview]
This is the a preview release of what will become OpenTK 1.0. Major changes:
* Bindings with generic ref/out overloads now reflect changes back to the caller.
* Improved OpenGL 3.2 bindings.
* Added helper overloads to GetAttrib* methods.
* Fixed 'out string' parameters in ES20 (should have been StringBuilder).
* Added Icon and IconChanged support to NativeWindow.
* Added Focused and FocusedChanged support to NativeWindow.
* Added KeyPress event to NativeWindow (in progress).
* Improved WindowBorder and WindowState changes for NativeWindow on win32.
* Fixed premature GLControl initialization (Load event is now correctly raised).
* Fixed Vector[234]d and Matrix4d signatures (double instead of float) and added several new methods to Matrix4 and Matrix4d.
* Fixed a large number of smaller issues and annoyances in NativeWindow (see complete bug list, below).
* Improved internal loading code for the various bindings.
* Made the binding generator more robust when handling invalid or malformed specifications.
* GameWindow OnLoad and OnUnload methods are now protected instead of public (this was supposed to happen in the previous release).
This is the first beta release of OpenTK 1.0. Important changes include:
* Type-safe OpenGL|ES 2.0 bindings.
* A large number of new examples on picking, shaders, dds textures, constructive solid geometry and multithreading.
* Improved Mac OS X support.
* Improved multi-monitor support.
* Improved multithreading support.
* A large number of bug- and stability fixes.
* Improved documentation.
* Improvements and bugfixes to the build system.
* Temporary removal of OpenGL|ES 1.0, 1.1 and OpenCL bindings.
Please visit http://www.opentk.com to report issues or request features.
@ -26,47 +21,61 @@ Please visit http://www.opentk.com to report issues or request features.
[Resolved issues]
[#588]
[#964]
[#550]
[#552]
[#622]
[#1013]
[#1014]
[#1015]
[#1028]
[#1071]
[#1083]
[#1146]
[#1151]
[#1165]
[#1175]
[#1176]
[#1180]
[#1190]
[#1207]
[#1213]
[#1214]
[#1215]
[#1118]
[#1226]
[#1227]
[#1233]
[#1235]
[#1239]
[#1240]
[#1248]
[#1142]
[#1265]
[#1268]
[#1274]
[#1291]
[#1294]
[#1300]
[#1303]
[#1304]
[#1307]
[#1313]
[#1318]
[#1333]
[#1334]
[#1338]
[#1339]
[#1341]
[#1350]
[Known issues]
* Mono 2.2 and 2.4.0 cannot compile this release due to a compiler bug (https://bugzilla.novell.com/show_bug.cgi?id=488960). Please compile with Mono 2.0, 2.4.2+ or use the precompiled binaries instead.
* Mono 2.2 and 2.4.0 fail to compile OpenTK due to a compiler bug (https://bugzilla.novell.com/show_bug.cgi?id=488960). Please compile with Mono 2.0, 2.4.2+ or use the supplied binaries instead.
* The example browser is incomplete.
* The Mac OS X port is untested and may fail to work correctly. If you are interested in helping out, please make a post at the forums.
* The Mac OS X port needs work. If you are interested in helping out, please make a post at http://www.opentk.com/forum/3.
* MonoDevelop fails to sign assemblies (bugs https://bugzilla.novell.com/show_bug.cgi?id=484752 and https://bugzilla.novell.com/show_bug.cgi?id=537063).
* OpenGL 3.2 methods may be missing specific tokens. Please report any such issues at http://www.opentk.com/node/add/project-issue/opentk
[API changes]
Please note that binary compatibility is not preserved between beta releases.
If you are upgrading from OpenTK 0.9.9-0 or earlier, please add a reference to OpenTK.Compatibility.dll and OpenTK.GLControl.dll (if necessary).
If you are upgrading from OpenTK 0.9.9-0 or earlier you can simplify the upgrade process by adding a reference to OpenTK.Compatibility.dll and OpenTK.GLControl.dll (if necessary). OpenTK.Compatibility contains code and APIs that have been deprecated and removed from the core library, as well as code for interoperation with the Tao framework.
[1.0 beta-1]
1. Compiler errors in OpenTK.Graphics.ES20 about missing "All" enums.
Solution: The ES20 namespace now contains proper, type-safe enums, similar to the OpenGL and OpenAL namespaces. Please replaces all instances of the All enum by the enums suggested by your compiler.
2. DisplayDevice.AvailableDevices and AvailableResolutions now return IList<DisplayDevice> and IList<DisplayResolution> instead of DisplayDevice[] and DisplayResolution[], respectively.
Solution: Please store the return value in an IList<T> variable, instead of T[] (where T may be DisplayDevice or DisplayResolution). This issue is unlikely to come up in practice.
3. OpenGL|ES 1.0, 1.1 and OpenCL namespaces are missing.
Solution: These namespaces were not finalized in time for OpenTK 1.0 will be distributed as separate libraries. Please upgrade to the latest 1.x-dev release in http://www.opentk.com/project/opentk.
[0.9.9-3]

View file

@ -5,6 +5,7 @@ using OpenTK.Compute.CL10;
namespace Examples
{
#if EXPERIMENTAL
using cl_context = IntPtr;
using cl_device_id = IntPtr;
using cl_command_queue = IntPtr;
@ -137,4 +138,5 @@ vectorAdd(__global const float * a,
}
}
}
#endif
}

View file

@ -41,6 +41,7 @@ using OpenTK.Graphics.ES11;
namespace Examples.Tutorial
{
#if EXPERIMENTAL
[Example("Immediate mode", ExampleCategory.OpenGLES, "1.1", Documentation = "SimpleES11Window")]
public class SimpleES11Window : GameWindow
{
@ -204,4 +205,5 @@ namespace Examples.Tutorial
#endregion
}
#endif
}

View file

@ -25,11 +25,9 @@
//
#endregion
using System;
using System.Diagnostics;
using System.IO;
using System.Xml.Serialization;
using OpenTK;
using OpenTK.Graphics;
namespace Examples.Tests
@ -48,9 +46,9 @@ namespace Examples.Tests
xs.Serialize(stream, color);
stream.Seek(0, SeekOrigin.Begin);
color2 = (Color4)xs.Deserialize(stream);
Console.WriteLine(color);
Console.WriteLine(color2);
Console.WriteLine(color.Equals(color2));
Trace.WriteLine(color);
Trace.WriteLine(color2);
Trace.WriteLine(color.Equals(color2));
}
}
}

View file

@ -35,7 +35,10 @@ namespace OpenTK.Compute.CL10
/// <summary>
/// Provides access to the OpenCL 1.0 flat API.
/// </summary>
public partial class CL : BindingsBase
#if EXPERIMENTAL
public
#endif
sealed partial class CL : BindingsBase
{
#region Fields

View file

@ -82,16 +82,16 @@ namespace OpenTK.Graphics
/// <summary>
/// Constructs a new Color4 structure from the specified components.
/// </summary>
/// <param name="r"></param>
/// <param name="g"></param>
/// <param name="b"></param>
/// <param name="a"></param>
/// <param name="r">The red component of the new Color4 structure.</param>
/// <param name="g">The green component of the new Color4 structure.</param>
/// <param name="b">The blue component of the new Color4 structure.</param>
/// <param name="a">The alpha component of the new Color4 structure.</param>
public Color4(byte r, byte g, byte b, byte a)
{
R = r * (float)Byte.MaxValue;
G = g * (float)Byte.MaxValue;
B = b * (float)Byte.MaxValue;
A = a * (float)Byte.MaxValue;
R = r / (float)Byte.MaxValue;
G = g / (float)Byte.MaxValue;
B = b / (float)Byte.MaxValue;
A = a / (float)Byte.MaxValue;
}
/// <summary>

View file

@ -7,7 +7,10 @@ namespace OpenTK.Graphics.ES10
/// <summary>
/// Provides access to OpenGL ES 1.0 methods.
/// </summary>
public sealed partial class GL : GraphicsBindingsBase
#if EXPERIMENTAL
public
#endif
sealed partial class GL : GraphicsBindingsBase
{
const string Library = "libGLES.dll";
static readonly object sync_root = new object();

View file

@ -9,7 +9,10 @@ namespace OpenTK.Graphics.ES11
/// <summary>
/// Provides access to OpenGL ES 1.1 methods.
/// </summary>
public sealed partial class GL : GraphicsBindingsBase
#if EXPERIMENTAL
public
#endif
sealed partial class GL : GraphicsBindingsBase
{
const string Library = "libGLES.dll";
static readonly object sync_root = new object();