Commit graph

727 commits

Author SHA1 Message Date
Stefanos A. 94e2649704 Cleaned up context profile selection
Added support for WGL_create_context profiles and added methods for the
selection of context flags and profile.
2013-11-14 08:30:11 +01:00
Stefanos A. 803c575201 Corrected core profile selection
According to GLX_create_context, the correct flag for a core profile is
GLX_CONTEXT_CORE_PROFILE_BIT_ARB.
2013-11-14 08:29:06 +01:00
Stefanos A. f142dbdfc3 Improved WinGLContext initialization
Cleaned up and added debugging information to the temporary context
construction in WinGLContext. Simplified WinGraphicsMode constructor.
2013-11-14 08:05:08 +01:00
Stefanos A. 5d6ca5c7da Added GetDeviceCaps (windows platform)
We will use this method to read out the logical DPI of the monitor and
scale window elements accordingly.
2013-11-14 01:43:40 +01:00
Stefanos A. f9fdddea64 Re-added WindowHandle property
There are projects that use reflection to access
*WindowInfo.WindowHandle directly. This change ensures we don't break
them.
2013-11-13 18:25:49 +01:00
Stefanos A. b9fcf7c3c3 Cleaner startup sequence
OpenTK.Toolkit will now initialize OpenTK.Configuration and
OpenTK.Platform.Factory explicitly. It can also receive an optional
ToolkitOptions parameter to influence the OpenTK.Platform implementation
that will be chosen. Finally, it explicitly implements IDisposable to
clean up after itself.
2013-11-12 20:34:53 +01:00
Stefanos A. 0d0f578788 Enabled SAMPLE_BUFFERS EGL attribute
This attribute is required for multisampling support.
2013-11-11 11:42:30 +01:00
Stefanos A b08e59e861 Allow non-realized GraphicsMode
It is now possible to pass a non-realized GraphicsMode to the X11GLContext and X11GLNative constructors. A non-realized GraphicsMode is a GraphicsMode with a null Index (i.e. which has not passed through SelectGraphicsMode()).
2013-11-09 18:55:17 +01:00
parallels 62d6791736 Use glXGetProcAddressARB
According to the Linux OpenGL ABI, glXGetProcAddressARB must be statically exported by libGL. This does *not* hold true for glXGetProcAddress. We must used the ARB version instead.
Furthermore, glx entry points, unlike wgl, do not depend on any specific OpenGL context. This means we can load them in the constructor of the Glx class.
2013-11-09 18:50:53 +01:00
parallels 7f921dae47 Merge branch 'master' of https://github.com/thefiddler/opentk into modes 2013-11-09 17:15:05 +01:00
parallels da684d233e Swallow DllNotFoundException in Sdl2 constructor 2013-11-09 17:13:24 +01:00
Stefanos A 95316829ec Updated WGL init sequence
WinGraphicsMode no longer creates a temporary context in order to create
the list of available modes. Instead, it requires to be passed an
existing context in its constructor.

WinGLContext now creates one temporary context in its static constructor
and hands that to WinGraphicsMode.

WinFactory no longer supports the CreateGraphicsMode API. This API will
be removed in the future, because the link because contexts and modes
cannot be separated in the general case.
2013-11-09 15:07:19 +01:00
Stefanos A 0f01a6d128 Stronger check for ES support
It is not enough to check for EGL, we also need to check that
ContextProfileFlags.ES is set.
2013-11-09 15:07:18 +01:00
Stefanos A 440e3fe248 Load ES30 and OpenGL4 entry points 2013-11-09 15:07:16 +01:00
Stefanos A 2725b3cd08 Fix support for 3.2+ contexts (issue 3111)
glXGetProcAddress may return a non-null value even if a function is not
supported by the server. We need to check the extension string using
any GLX extensions. Fixes issue http://www.opentk.com/node/3111 "GLX
extension support is not checked correctly".

Furthermore, mode selection is now performed explicitly by the
X11GLContext constructor.
2013-11-09 11:16:14 +01:00
Stefanos A 3c71634667 Temp context not necessary for GLX
GLX entry points are not bound to a specific context. This means that, unlike WGL, GLX does not require a temporary context in order to load its entry points!
2013-11-09 11:07:37 +01:00
Stefanos A 6edaf8c3cf Deduplicate MacOSGraphicsMode and AglContext
The IGraphicsMode interface is gradually being removed and the
MacOSFactory will now throw an exception if an instance is requested.
AglContext no longer duplicates MacOSGraphicsMode functionality.
2013-11-08 18:44:02 +01:00
Stefanos A f77a6b11c3 SDL_GL_GetAttribute requires a valid context
Calling SDL_GL_GetAttribute when context construction has failed leads
to erroneous behavior. This call should only be made when a context has
been constructed correctly.
2013-11-08 17:31:54 +01:00
Stefanos A e0ffd9b42d More sane Sdl2Factory.CreateGetCurrentContext() implementation 2013-11-08 15:26:52 +01:00
Stefanos A 29fe1052de Added SDL_GL_GetCurrentContext method and TouchMouseID constant.
SDL_GL_GetCurrentContext will allow us to replace the weird
implementation in Sdl2Factory.CreateGetCurrentGraphicsContext()
and the latter to disable mouse emulation if we wish to.
Conflicts:
	Source/OpenTK/Platform/SDL2/Sdl2.cs
2013-11-08 15:25:42 +01:00
Stefanos A 28fa768257 Fixed platform detection for Android
Conflicts:
	Source/OpenTK/Configuration.cs
2013-11-08 10:54:50 +01:00
Stefanos A. a51540e8d9 Updated WGL init sequence
WinGraphicsMode no longer creates a temporary context in order to create
the list of available modes. Instead, it requires to be passed an
existing context in its constructor.

WinGLContext now creates one temporary context in its static constructor
and hands that to WinGraphicsMode.

WinFactory no longer supports the CreateGraphicsMode API. This API will
be removed in the future, because the link because contexts and modes
cannot be separated in the general case.
2013-11-08 10:46:27 +01:00
Stefanos A. c9b905d235 Stronger check for ES support
It is not enough to check for EGL, we also need to check that
ContextProfileFlags.ES is set.
2013-11-08 10:42:48 +01:00
Stefanos A. a12b394607 Load ES30 and OpenGL4 entry points 2013-11-08 10:39:08 +01:00
Stefanos A. 62c9793a6e Fixed number of buffers
ContextAttribute.DOUBLEBUFFER is a boolean in SDL (false->single
buffering, true->double buffering). We need to adjust the number of
buffers accordingly (single buffering->1 buffer, double buffering->2
buffers).
2013-11-06 01:04:59 +01:00
Stefanos A 21a1ca8895 Switch to EnumDisplayModesEx
Use EnumDisplayModesEx instead of EnumDisplayModes. This might help
with issue #6.
2013-11-05 23:41:42 +01:00
Stefanos A a4f125f16e Added workaround for issue #6
The issue is that some display devices report a BitsPerPel value of 0.
It is not clear whether this is a bug in WinDisplayDevice.cs or some
strange windows issue. The implemented workaround adds an entry to the
debug log and hardcodes BitsPerPel to 32 whenever this condition is
encountered. More investigation required.
2013-11-05 23:21:49 +01:00
Stefanos A. be6c583f4f Implemented Sdl2GraphicsMode.. 2013-10-24 09:32:17 +02:00
Stefanos A. 192fedbca5 Removed sdl2-cs in favor of a leaner, better-designed binding. 2013-10-24 02:02:35 +02:00
Stefanos A 80f0569f9a Implemented new, leaner SDL2 binding.
The new binding is based on the SDL2.0.1 RC1 headers.
2013-10-24 01:45:13 +02:00
Stefanos A. 0d3ab7174c Fixed crash on 32-bit machines
uint-to-intptr conversion must obey uint-to-int conversions on 32-bit
machines, otherwise an OverflowException may occur: conversions of
numbers over 2^31-1 must be declared as unchecked.

Fixes issue reported here: http://www.opentk.com/node/3418
2013-10-21 19:41:26 +02:00
thefiddler 4dfcf39d26 Added missing DllImport attribute.
Fixes thefiddler/opentk#1
2013-10-12 19:43:26 +02:00
Stefanos A 915ead34cb Modify dllimport path on Android builds. 2013-10-12 15:17:10 +02:00
Stefanos A 30e42bb6dd [DllImport] registry methods when the Microsoft.Win32 namespace is not
available (untested).
2013-10-12 05:15:46 +02:00
Stefanos A 70818d97e1 Fixed compilation on desktop platforms. 2013-10-12 05:14:51 +02:00
Stefanos A 1130d988b0 Use OpenTK.Minimal to stub out missing System.Drawing functionality
when building on Android or iOS platforms.
2013-10-12 05:06:54 +02:00
thefiddler f013c44ba1 Fixed Tilde and Number1 scancodes 2013-10-11 09:51:08 +02:00
thefiddler 8dcb8601a2 Normalized line endings
Hopefully this is the first and last time we have to do this.
2013-10-11 01:58:54 +02:00
Stefanos A 73e3614338 Merge branch 'scancodes'
Conflicts:
	Source/OpenTK/OpenTK.csproj
	Source/OpenTK/Platform/Windows/WinFactory.cs
2013-10-11 01:05:55 +02:00
Stefanos A 5aba35668b Always Set HIDPI flag
It does not to set this flag on previous SDL2 versions, it is ignored silently when not supported.
2013-10-10 00:34:15 +02:00
Stefanos A 459313dca8 Fixed line endings 2013-10-10 00:18:59 +02:00
Stefanos A fb86334835 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.
2013-10-07 14:17:42 +03:00
Stefanos A d81bedf5f8 Moved all input processing to Sdl2InputDriver
This reduces the duplication of code between Sdl2NativeWindow and
Sdl2InputDriver. Sdl2InputDriver is now solely responsible for handling
input.
2013-10-04 10:02:19 +02:00
Stefanos A bad2b7b6d7 Implemented IDisposable in Sdl2Joystick
Sdl2Joystick calls SDL_JoystickOpen, which means we must call
SDL_JoystickClose on shutdown.
2013-10-04 10:00:57 +02:00
Stefanos A 79def664b8 No separate Factory.Embedded for SDL2
Sdl2Factory supports both desktop and embedded profiles, there is no
need to construct a separate Embedded profile.
2013-10-04 09:57:43 +02:00
Stefanos A 17b4f62151 Sdl2JoystickDriver.Poll() and axis fixes 2013-10-04 02:37:41 +02:00
Stefanos A af67a96759 Initial implementation of IJoystickDriver API 2013-10-04 01:39:22 +02:00
Stefanos A b4c29d802b 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).
2013-10-04 01:38:19 +02:00
Stefanos A. b3a0b78454 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.
2013-10-03 20:53:34 +02:00
Stefanos A. 3f81bc26d4 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.
2013-10-03 20:51:36 +02:00