Stefanos A [Sat, 12 Oct 2013 03:07:46 +0000 (05:07 +0200)]
System.Drawing is required for Point, Size and Rectangle types.
Stefanos A [Sat, 12 Oct 2013 03:06:54 +0000 (05:06 +0200)]
Use OpenTK.Minimal to stub out missing System.Drawing functionality
when building on Android or iOS platforms.
Stefanos A [Sat, 12 Oct 2013 02:59:55 +0000 (04:59 +0200)]
Implemented minimal System.Drawing stubs for Xamarin.Android targets.
thefiddler [Fri, 11 Oct 2013 07:52:53 +0000 (09:52 +0200)]
Why does this file keep changing?
thefiddler [Fri, 11 Oct 2013 07:51:08 +0000 (09:51 +0200)]
Fixed Tilde and Number1 scancodes
thefiddler [Thu, 10 Oct 2013 23:58:54 +0000 (01:58 +0200)]
Normalized line endings
Hopefully this is the first and last time we have to do this.
thefiddler [Thu, 10 Oct 2013 23:57:45 +0000 (01:57 +0200)]
Update .gitattributes
Use automatic line ending conversion
Stefanos A [Thu, 10 Oct 2013 23:16:20 +0000 (01:16 +0200)]
Treate .pdf as binary files
Stefanos A [Thu, 10 Oct 2013 23:11:28 +0000 (01:11 +0200)]
Added line-ending conversions
Stefanos A [Thu, 10 Oct 2013 23:05:55 +0000 (01:05 +0200)]
Merge branch 'scancodes'
Conflicts:
Source/OpenTK/OpenTK.csproj
Source/OpenTK/Platform/Windows/WinFactory.cs
Stefanos A [Wed, 9 Oct 2013 22:34:15 +0000 (00:34 +0200)]
Always Set HIDPI flag
It does not to set this flag on previous SDL2 versions, it is ignored silently when not supported.
Stefanos A [Wed, 9 Oct 2013 22:18:59 +0000 (00:18 +0200)]
Fixed line endings
Stefanos A [Mon, 7 Oct 2013 11:17:42 +0000 (14:17 +0300)]
HIDPI support requires SDL > 2.0.0
SDL_GL_GetDrawableSize was introduced after 2.0.0, so we need to check for that version before we call this method. Fixes MethodNotFounException on vanilla libsdl2-2.0.0 on linux.
Stefanos A [Fri, 4 Oct 2013 15:04:35 +0000 (17:04 +0200)]
Do not copy Dependencies
Since the Example Browser is not loading its Dependencies by itself, there is no point in copying them to the output directory.
Stefanos A [Fri, 4 Oct 2013 15:01:51 +0000 (17:01 +0200)]
Use 7z wildcards to zip tree
Using msbuild/xbuild wildcards results in different behavior between the two implementations. Since we require 7z anyway, it is simpler if we just use that directly.
Stefanos A. [Fri, 4 Oct 2013 14:52:59 +0000 (16:52 +0200)]
Fixed git revision detection
Stefanos A [Fri, 4 Oct 2013 08:03:26 +0000 (10:03 +0200)]
Fixed file not found error
The debug.log would be deleted after launching an example, causing the
example browser to complain that the file cannot be found. In reality,
it should be deleted before launching an example - fixed.
Stefanos A [Fri, 4 Oct 2013 08:02:19 +0000 (10:02 +0200)]
Moved all input processing to Sdl2InputDriver
This reduces the duplication of code between Sdl2NativeWindow and
Sdl2InputDriver. Sdl2InputDriver is now solely responsible for handling
input.
Stefanos A [Fri, 4 Oct 2013 08:00:57 +0000 (10:00 +0200)]
Implemented IDisposable in Sdl2Joystick
Sdl2Joystick calls SDL_JoystickOpen, which means we must call
SDL_JoystickClose on shutdown.
Stefanos A [Fri, 4 Oct 2013 07:57:43 +0000 (09:57 +0200)]
No separate Factory.Embedded for SDL2
Sdl2Factory supports both desktop and embedded profiles, there is no
need to construct a separate Embedded profile.
Stefanos A [Fri, 4 Oct 2013 00:37:41 +0000 (02:37 +0200)]
Sdl2JoystickDriver.Poll() and axis fixes
Stefanos A [Fri, 4 Oct 2013 00:37:05 +0000 (02:37 +0200)]
Display joystick information
Stefanos A [Thu, 3 Oct 2013 23:44:20 +0000 (01:44 +0200)]
New SDL2 library with HiDPI support
Upgraded SDL2 to hg 7778:
a571a9947869, which includes support for the
new SDL_WINDOW_HINT_HIDPI flag.
Stefanos A [Thu, 3 Oct 2013 23:39:22 +0000 (01:39 +0200)]
Initial implementation of IJoystickDriver API
Stefanos A [Thu, 3 Oct 2013 23:38:19 +0000 (01:38 +0200)]
Add support for HiDPI modes
When HiDPI is enabled, the size of the OpenGL surface (specified in
pixels) may no longer correspond to the size of the window (specified
in points). Width, Height, ClientSize and ClientRectangle return the
size of the OpenGL surface in device-dependent pixel coordinates
(origin: top-left pixel of the surface). Bounds and Size return the
size of the window in device-independent point coordinates (origin:
desktop).
Stefanos A. [Thu, 3 Oct 2013 18:53:34 +0000 (20:53 +0200)]
Use locale-independent scancodes
This significantly improves the usability of keyboard input, by allowing
a common input scheme to be used on different keyboard layouts. Text
input will be facilitated through a new API.
Stefanos A. [Thu, 3 Oct 2013 18:52:02 +0000 (20:52 +0200)]
Added common key aliases
Stefanos A. [Thu, 3 Oct 2013 18:51:36 +0000 (20:51 +0200)]
Removed support for < Windows XP
The support burden for Windows versions prior to XP was too large, plus
the relevant code was completely untested. Removing that will allow us
to focus on the things that really matter.
Stefanos A [Thu, 3 Oct 2013 15:22:13 +0000 (17:22 +0200)]
Throw extension if context creation fails
This aligns behavior with that of the other platforms.
Stefanos A [Thu, 3 Oct 2013 15:20:17 +0000 (17:20 +0200)]
Fallback to desktop context if embedded fails
Starting with OpenGL 4.1 and the ARB_ES2_compatibility extension, desktop contexts can execute OpenGL|ES code. This fallback will allow platforms to execute OpenGL|ES code even if EGL is not available (e.g. Nvidia/Windows).
Stefanos A. [Thu, 3 Oct 2013 14:45:28 +0000 (16:45 +0200)]
NRE -> GraphicsContextMissingException
Throw a GraphicsContextMissingException if GraphicsBindingBase.LoadAll() is called without a current GraphicsContext.
Stefanos A. [Thu, 3 Oct 2013 14:42:38 +0000 (16:42 +0200)]
Load ES entry points even on desktop
Some drivers / operating systems export ES entry points as extensions on regular "desktop" GraphicsContexts. Attempt to load them even if the user has not explicitly asked for an ES context.
Stefanos A [Thu, 3 Oct 2013 13:11:59 +0000 (15:11 +0200)]
Merge branch 'sdl2' of https://github.com/thefiddler/opentk
Conflicts:
Source/OpenTK/Platform/SDL2/Sdl2NativeWindow.cs
Stefanos A. [Thu, 3 Oct 2013 12:59:30 +0000 (14:59 +0200)]
Serialize Sdl2NativeWindow methods
This change, along with moving DestroyWindow() to the Dispose() method
fixes crashes on shutdown.
Stefanos A. [Thu, 3 Oct 2013 12:04:34 +0000 (14:04 +0200)]
Reload WGL entry points in WinGLContext()
This fixes AccessViolationException when creating multiple contexts on
Intel hardware.
Stefanos A [Thu, 3 Oct 2013 09:17:21 +0000 (11:17 +0200)]
Added support for OpenGL ES through SDL2
If SDL2 is supported, the PlatformFactory will now use it for creating the OpenGL ES context. Previously, it would revert to the native drivers when GraphicsContextFlag.Embedded was specified.
Stefanos A. [Wed, 2 Oct 2013 15:55:57 +0000 (17:55 +0200)]
Improved debugging messages
Exceptions that occur in the example process are now logged.
Stefanos A. [Wed, 2 Oct 2013 15:55:30 +0000 (17:55 +0200)]
MouseButtonUp and MouseMove fixes
MouseMove no longer leaves the window borders when the cursor is
invisible. MouseButtonUp events are now reported even when they occur
outside the window. This aligns SDL2 behavior with the native drivers.
Stefanos A. [Wed, 2 Oct 2013 14:31:22 +0000 (16:31 +0200)]
Create Sdl2NativeWindow hidden
This conforms to the other platform drivers and looks better in general
(no delay between window creation and OpenGL context creation.)
Stefanos A. [Wed, 2 Oct 2013 14:26:47 +0000 (16:26 +0200)]
Fixed unsetting current context in SDL2
SDL_GL_MakeCurrent(IntPtr.Zero, IntPtr.Zero) is the correct way to
remove the current OpenGL context from the calling thread. Fixes
threaded rendering on Windows.
Stefanos A [Wed, 2 Oct 2013 13:25:37 +0000 (15:25 +0200)]
Added missing x64 unmanaged dependencies
The .gitignore file ignores directories starting with x64, causing these depedendencies to be missed. Fixed by adding them manually.
Stefanos A [Tue, 1 Oct 2013 23:39:53 +0000 (01:39 +0200)]
Added Mac OS X build of SDL2 to dependencies
Stefanos A [Tue, 1 Oct 2013 23:14:26 +0000 (01:14 +0200)]
Improved diagnostics in Dispose()
Leaked and disposed resources are now always reported.
Stefanos A [Tue, 1 Oct 2013 23:13:06 +0000 (01:13 +0200)]
Added Sync object for SDL
Stefanos A [Tue, 1 Oct 2013 23:12:12 +0000 (01:12 +0200)]
Marked class as partial
This allows extension of the class without touching the upstream code.
Stefanos A [Tue, 1 Oct 2013 23:10:03 +0000 (01:10 +0200)]
Use separate process for executing examples
Using a separate, isolated process protects against incompatible interactions between the Example Browser (WinForms) and the executing example (native or SDL). It also protects the main GUI from crashes in the example code.
Stefanos A [Tue, 1 Oct 2013 22:05:59 +0000 (00:05 +0200)]
Fixed invalid version string on git
Git commit hashcodes are not compatible with the 16bit integer values found in .Net version numbers. Use the git commit count as a version number instead.
Stefanos A. [Tue, 1 Oct 2013 20:13:33 +0000 (22:13 +0200)]
MakeCurrent(null) should make context non-current
This fixes the crash in the "GameWindow Threading" example.
Stefanos A [Tue, 1 Oct 2013 20:05:50 +0000 (22:05 +0200)]
Fixed build under xbuild
Mono xbuild does not recognize the DebugType none element in the project configuration. Remove this in order to make it happy.
Stefanos A [Tue, 1 Oct 2013 20:04:11 +0000 (22:04 +0200)]
Clean up OpenTK after every example
Use the IDisposable instance returned by OpenTK.Toolkit.Init() to shutdown OpenTK after the end of each example run.
Stefanos A [Tue, 1 Oct 2013 20:01:27 +0000 (22:01 +0200)]
Improved resource disposal
Added IDisposable interface to all classes holding native data that must be freed. OpenTK.Toolkit.Init() now returns an IDisposable instance that can be used to cleanup all native data held by OpenTK. This is useful when re-initializing OpenTK (possibly in a new AppDomain), as is the case in the Example browser.
Stefanos A. [Tue, 1 Oct 2013 19:05:02 +0000 (21:05 +0200)]
Removed terrible hack for SDL_WINDOW_OPENGL
SDL2 will refuse to create an OpenGL context on a window with the SDL_WINDOW_FOREIGN flag (i.e. windows that are passed to SDL2 through SDL_CreateWindowFrom). This must be fixed upstream.
Stefanos A. [Mon, 30 Sep 2013 18:47:29 +0000 (20:47 +0200)]
Implemented Sdl2GLControl
SDL2 still fails with "not an OpenGL window".
Stefanos A [Mon, 30 Sep 2013 16:29:55 +0000 (18:29 +0200)]
Merge remote-tracking branch 'origin/master' into sdl2
Stefanos A. [Mon, 30 Sep 2013 16:27:13 +0000 (18:27 +0200)]
Workaround for NRE on WinRawMouse driver
On some systems, the Windows Raw Input driver fails to find the name of
a mouse device, causing a NRE. Since the name is not vital information,
a dummy name is generated as a workaround.
thefiddler [Mon, 30 Sep 2013 12:43:06 +0000 (14:43 +0200)]
Merge branch 'sdl2' of https://github.com/thefiddler/opentk into sdl2
Stefanos A. [Mon, 30 Sep 2013 12:20:33 +0000 (14:20 +0200)]
Attempted to fix key modifier state
SDL2 does not report keydown and keyup events on modifiers keys until
you release them. Attempted to fix this using SDL_GetModifierState, but
this does not appear to work. Should hit upstream.
Stefanos A. [Mon, 30 Sep 2013 12:19:10 +0000 (14:19 +0200)]
Renamed Sdl2InputBase
Stefanos A. [Mon, 30 Sep 2013 11:51:31 +0000 (13:51 +0200)]
Use scancodes for KeyboardDevice states
This resolves the issue where different layouts would return different
keys when pressing the same physical key. A new API must be introduced
for text input.
Stefanos A. [Mon, 30 Sep 2013 11:49:53 +0000 (13:49 +0200)]
Fixed return values of keyboard functions
SDL_GetKeyFromScancode and SDL_GetScancodeFromKey should return a
SDL_Keycode or SDL_Scancode respectively, instead of void.
Stefanos A. [Mon, 30 Sep 2013 11:48:12 +0000 (13:48 +0200)]
Fixed documentation comment
Stefanos A. [Mon, 30 Sep 2013 11:13:02 +0000 (13:13 +0200)]
Renamed Sdl2InputBase to Sdl2InputDriver
Sdl2InputDriver describes the role and function of this class more
accurately.
Stefanos A. [Mon, 30 Sep 2013 10:22:51 +0000 (12:22 +0200)]
Made internal SDL2 API private
Stefanos A. [Mon, 30 Sep 2013 10:22:25 +0000 (12:22 +0200)]
Implemented SDL2 mouse and keyboard drivers
thefiddler [Mon, 30 Sep 2013 09:09:14 +0000 (11:09 +0200)]
Reduced icon resolution to 128x128 in order to avoid "out of memory" errors when building with Mono.
Stefanos A. [Sun, 29 Sep 2013 21:58:10 +0000 (23:58 +0200)]
Added high-res icons to Example Browser
The Example Browser should now look better on high resolution screens.
Stefanos A. [Sun, 29 Sep 2013 21:36:28 +0000 (23:36 +0200)]
Free SDL surface after updating the window icon
The SDL surface is no longer needed and will cause a memory leak if not
freed. Additionally, the decoded BitmapData should not be unlocked until
after updating the window icon, as it may be moved by the GC otherwise.
Stefanos A. [Sun, 29 Sep 2013 21:08:51 +0000 (23:08 +0200)]
Fixed decoding of Icons
The rgba mask for decoding icon surfaces was incorrect. Icons should
appear as expected now.
Stefanos A. [Fri, 27 Sep 2013 21:07:23 +0000 (23:07 +0200)]
Updated license information
Stefanos A. [Fri, 27 Sep 2013 21:01:46 +0000 (23:01 +0200)]
Implemented WindowState, WindowBorder and Icon
SDL2 suffers many of the issues we encountered when implementing
OpenTK.Platform.Windows. Workarounds are now in place to make
WindowState changes behave reasonably.
Stefanos A. [Fri, 27 Sep 2013 20:59:56 +0000 (22:59 +0200)]
Increased the text surface size
This is necessary for high-dpi monitors which render text at double
resolution.
Stefanos A. [Fri, 27 Sep 2013 16:57:05 +0000 (18:57 +0200)]
Use OpenGL window flag and switch to "fake" fullscreen mode
The OpenGL flag is required when using SDL2 on Windows. Fake fullscreen
works much better on modern monitors and systems with multiple monitors.
Stefanos A. [Fri, 27 Sep 2013 16:55:58 +0000 (18:55 +0200)]
Add debug message when context creation fails
Stefanos A. [Fri, 27 Sep 2013 16:55:38 +0000 (18:55 +0200)]
Use Wgl.Import.GetCurrentContext DllImport directly
Wgl is implemented using the regular DllImport + delegate approach, in
order to support extensions. The delegates have not been armed at this
point, so we need to use the DllImport directly.
The whole wgl API should be revisited (we are using only a tiny
portion.)
Stefanos A [Fri, 27 Sep 2013 13:20:45 +0000 (15:20 +0200)]
Merge remote-tracking branch 'origin/master' into sdl2
Stefanos A. [Fri, 27 Sep 2013 13:19:21 +0000 (15:19 +0200)]
Added app.manifest to OpenTK.Examples project
The file had been added to the source tree, but was missing from the
OpenTK.Examples project configuration, causing hi-dpi mode to fail on
the examples window.
thefiddler [Fri, 27 Sep 2013 13:12:15 +0000 (15:12 +0200)]
Merge branch 'master' of https://github.com/thefiddler/opentk into sdl2
Stefanos A. [Fri, 27 Sep 2013 12:51:05 +0000 (14:51 +0200)]
Updated .gitignore
Documentation/Source contains hundreds of intermediate files generated
by doxygen.
thefiddler [Fri, 27 Sep 2013 12:41:37 +0000 (14:41 +0200)]
Implemented SDL2 platform using sdl2-cs
This is a new platform that can be used then sdl2 is installed on the target system. SDL2 is commercially supported by Valve and provides better support for MacOS compared to our current implementation (Cocoa vs Carbon). It will also help us introduce faster support for new platforms. Existing platforms remain as a fallback and will be automatically used if sdl2 is not installed.
Please note that this is still a work in progress. The new mouse and keyboard API is not supported yet. Due to limitations of sdl2, multiple mice/keyboards are also not supported.
thefiddler [Fri, 27 Sep 2013 12:33:52 +0000 (14:33 +0200)]
Integrated sdl2-cs bindings for sdl2
This is using the sdl2/pure branch of https://github.com/thefiddler/SDL2-CS.git which contains the SDL2 bindings without MiniTK.
thefiddler [Fri, 27 Sep 2013 12:26:50 +0000 (14:26 +0200)]
Merge commit '
ed45dddb98c8250a33505c953b6c60bf7a854ffb' as 'Source/OpenTK/Platform/SDL2/sdl2-cs'
thefiddler [Fri, 27 Sep 2013 12:26:50 +0000 (14:26 +0200)]
Squashed 'Source/OpenTK/Platform/SDL2/sdl2-cs/' content from commit
b434bac
git-subtree-dir: Source/OpenTK/Platform/SDL2/sdl2-cs
git-subtree-split:
b434bacba859a036b11ec3ac76c3baa058764769
thefiddler [Wed, 25 Sep 2013 23:38:27 +0000 (01:38 +0200)]
Made OpenTK.Examples high-dpi aware
Added application manifest with the necessary key to mark
OpenTK.Examples as high-dpi aware. This improves application
appearance when DPI scaling is enabled.
thefiddler [Wed, 25 Sep 2013 23:35:59 +0000 (01:35 +0200)]
Added support for high-dpi mode on Windows.
The platform factory for windows now calls SetProcessDPIAware
in order to enable support for high-dpi modes. The relevant
DllImport has been added to API.cs
thefiddler [Wed, 25 Sep 2013 23:28:58 +0000 (01:28 +0200)]
Merge remote-tracking branch 'andy/master'
Andy Korth [Tue, 24 Sep 2013 15:07:37 +0000 (08:07 -0700)]
Merge pull request #20 from NeilWhite/MatrixRangeFix
Fix for setting Matrix/Vector values by Index
Neil White [Tue, 24 Sep 2013 14:34:39 +0000 (15:34 +0100)]
Fix for setting Matrix/Vector values by Index
Many Matrix*/Vector* implementations were throwing
IndexOutOfBoundsException when you tried to set their values via their
indexer due to a missing else statement.
Andy Korth [Mon, 12 Aug 2013 03:45:11 +0000 (20:45 -0700)]
Merge pull request #19 from jeske/fix
fix MacOS bug mapping modifier keys to the scancode array
David Jeske [Sun, 11 Aug 2013 02:41:50 +0000 (19:41 -0700)]
fix MacOS bug mapping modifier keys to the scancode array
Andy Korth [Sat, 10 Aug 2013 06:45:56 +0000 (23:45 -0700)]
Merge pull request #17 from jeske/master
added support for smooth trackpad scrolling on macos
David Jeske [Sat, 10 Aug 2013 06:20:49 +0000 (23:20 -0700)]
added support for smooth trackpad scrolling on macos
Andy Korth [Thu, 18 Jul 2013 21:06:45 +0000 (14:06 -0700)]
Merge pull request #15 from GoldBlockGames/master
Implemented Quaternion.FromMatrix
Robert Rouhani [Thu, 18 Jul 2013 20:14:30 +0000 (13:14 -0700)]
Added Quaterniond version of FromMatrix
Robert Rouhani [Thu, 18 Jul 2013 19:52:28 +0000 (12:52 -0700)]
Added Quaternion.FromMatrix
Added a Diagonal and Trace property to all matrices
Added missing doc comments in the matrix classes to reduce the number of compiler warnings
Andy Korth [Tue, 4 Jun 2013 21:02:37 +0000 (16:02 -0500)]
Fix for github issue 13, terrible crash on Keyboard GetState
Andy Korth [Sat, 27 Apr 2013 05:17:26 +0000 (22:17 -0700)]
Merge pull request #12 from zastrowm/patch-1
Remove lambdas from WinRawMouse.ProcessMouseEvents
zastrowm [Sat, 27 Apr 2013 02:09:12 +0000 (21:09 -0500)]
Update whitespace issues to conform to the rest of the document
zastrowm [Sat, 27 Apr 2013 02:06:08 +0000 (21:06 -0500)]
Change WinRawMouse.ProcessMouseEvents to call code directly instead of using lambdas
Change WinRawMouse.ProcessMouseEvents to call code directly instead of using lambdas. The lambdas caused memory allocations and were unneeded
Andy Korth [Mon, 15 Apr 2013 14:52:49 +0000 (07:52 -0700)]
Merge pull request #10 from Artfunkel/master
Matrix ExtractScale() bug fix and "Clear" methods
Tom Edwards [Thu, 11 Apr 2013 21:23:43 +0000 (22:23 +0100)]
Added Matrix clearing methods
- Added ClearTranslation(), ClearScale(), ClearRotation() and
ClearProjection()
- Added ExtractProjection() to Matrix4
- Fixed ExtractScale() giving incorrect results if a Matrix4 contained
projection data
- Added setters to Matrix4d's Column properties