No description
Find a file
Sam Lantinga a09aac7720 Add a new hint SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT that allows SDL_CreateWindowFrom() to set the pixel format of another SDL_Window (and also will set the SDL_WINDOW_OPENGL flag on the window created with SDL_CreateWindowFrom()).
The reasoning behind this change is that source2 in -tools mode has a single OpenGL context that is used with multiple different windows.  Some of those windows are created outside the engine (i.e. with Qt) and therefore we need to use SDL_CreateWindowFrom() to get an SDL_Window for those.  The requirement for sharing an OpenGL context across multiple different windows is that each window has the same pixel format.  To facilitate this, I now set SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT for the main window before calling SDL_CreateWindowFrom().  When I do this, SDL_CreateWindowFrom() will:

1. Set the pixel format of the returned window to the same pixel format as this SDL_Window passed in with the hint
2. The flag SDL_WINDOW_OPENGL will be set on the new window so it can be used for OpenGL rendering.

I only currently implemented this for Win32/WGL so implementing it for other platforms (i.e. X11) remains a TODO.

CR: SamL

Some pseudocode that shows how this is used in Source2:

HWND hExternalHwnd; // HWND that was established outside of SDL

// Create main window (happens inside platwindow.cpp)
SDL_Window *mainWindow = SDL_CreateWindow( , SDL_WINDOW_OPENGL .. );
// Create GL context, happens inside rendersystemgl
SDL_GLContext onlyContext = SDL_GL_CreateContext( mainWindow );

// Now I need to create another window from hEternalHwnd for my swap chain that will have the same pixel format as mainWindow, so set the hint
SDL_SetHint( SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT, CFmtStr( %p, mainWindow) );

// Create the secondary window.  This returned window will have SDL_WINDOW_OPENGL set and share a pixel format with mainWindow from the hint
SDL_Window *secondaryWindow = SDL_CreateWindowFrom( hExternalHwnd );

// To render to the main window:
SDL_GL_MakeCurrent( mainWindow, onlyContext );
// Do some rendering to main window

// To render to the secondary window:
SDL_GLMakeCurrent( secondaryWindow, onlyContext );
// Do some rendering to secondary window
2014-01-30 12:30:40 -08:00
acinclude We have to fix the DLL name convention on Windows every time... 2012-10-19 21:43:41 -07:00
android-project fixed hat code validation. 2014-01-28 15:28:20 -08:00
build-scripts Enable ccache for Raspberry Pi buildbot script. 2013-12-15 00:21:42 -05:00
cmake Fixed XF86 VidMode extension dynamic loading with CMake project. 2014-01-21 16:28:53 -05:00
debian Fixed bug 2180 - debian/rules: Makefiles should use tabs 2013-11-03 11:34:03 -08:00
include Add a new hint SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT that allows SDL_CreateWindowFrom() to set the pixel format of another SDL_Window (and also will set the SDL_WINDOW_OPENGL flag on the window created with SDL_CreateWindowFrom()). 2014-01-30 12:30:40 -08:00
premake Implemented the Dynamic API magic. 2013-12-09 16:03:18 -05:00
src Add a new hint SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT that allows SDL_CreateWindowFrom() to set the pixel format of another SDL_Window (and also will set the SDL_WINDOW_OPENGL flag on the window created with SDL_CreateWindowFrom()). 2014-01-30 12:30:40 -08:00
test some fixes to the testshape.c code so it more correctly works. 2014-01-08 14:18:11 -05:00
VisualC Implemented the Dynamic API magic. 2013-12-09 16:03:18 -05:00
visualtest Don't crash when no WM is present. 2013-11-27 10:29:27 -08:00
Xcode Implemented the Dynamic API magic. 2013-12-09 16:03:18 -05:00
Xcode-iOS Implemented the Dynamic API magic. 2013-12-09 16:03:18 -05:00
.hgignore Added SDL_GetBasePath() and SDL_GetPrefPath() in new filesystem module. 2013-08-20 19:57:11 -04:00
.hgtags Added tag release-2.0.1 for changeset b9663c77f5c9 2013-10-23 20:58:39 -07:00
Android.mk Add Dynamic API to Android makefile. 2014-01-08 00:45:29 -05:00
autogen.sh Need to generate aclocal.m4 when rebuilding configure, but we don't need to check it in. 2013-05-26 16:01:40 -07:00
BUGS.txt Credits were truncated in a previous commit. 2013-05-27 21:44:16 -07:00
CMakeLists.txt Move to no-argument version of "endif()" in CMakeLists.txt. 2014-01-28 12:42:01 -05:00
configure autoconf script tweaks 2014-01-25 15:05:44 -05:00
configure.in autoconf script tweaks 2014-01-25 15:05:44 -05:00
COPYING.txt Renamed documentation files to .txt and converted them to DOS line endings so they would open properly on all systems. 2013-05-26 11:06:17 -07:00
CREDITS.txt Added Julian Winter to the credits for the SDL 2.0 website. 2013-08-12 08:45:37 -07:00
INSTALL.txt Updated the installation instructions to cover all supported platforms 2013-05-26 12:42:46 -07:00
Makefile.in Added SDL_GetBasePath() and SDL_GetPrefPath() in new filesystem module. 2013-08-20 19:57:11 -04:00
Makefile.minimal Added SDL_GetBasePath() and SDL_GetPrefPath() in new filesystem module. 2013-08-20 19:57:11 -04:00
Makefile.pandora Added SDL_GetBasePath() and SDL_GetPrefPath() in new filesystem module. 2013-08-20 19:57:11 -04:00
Makefile.psp Added SDL_GetBasePath() and SDL_GetPrefPath() in new filesystem module. 2013-08-20 19:57:11 -04:00
Makefile.wiz
README-android.txt Updated paths in README for Android. 2013-12-25 16:53:39 +01:00
README-cmake.txt Renamed documentation files to .txt and converted them to DOS line endings so they would open properly on all systems. 2013-05-26 11:06:17 -07:00
README-directfb.txt Fixed recently deleted Ms in READMEs. 2013-05-30 12:15:00 +02:00
README-dynapi.txt Adds README-dynapi.txt based on Ryan's G+ post (lightly edited) 2014-01-15 12:29:17 -03:00
README-gesture.txt Changed parameter name for gesture template save functions from "src" to "dst". 2013-11-02 12:07:21 +01:00
README-hg.txt Fixed recently deleted Ms in READMEs. 2013-05-30 12:15:00 +02:00
README-ios.txt Fixed recently deleted Ms in READMEs. 2013-05-30 12:15:00 +02:00
README-linux.txt Adds joystick/udev troubleshooting information to README-linux.txt 2013-11-14 10:19:07 -03:00
README-macosx.txt Mac: Better handling when someone else is the app delegate. 2013-10-07 16:01:40 -07:00
README-pandora.txt Renamed documentation files to .txt and converted them to DOS line endings so they would open properly on all systems. 2013-05-26 11:06:17 -07:00
README-platforms.txt Updated supported iOS version. 2013-07-12 23:16:11 -07:00
README-porting.txt Renamed documentation files to .txt and converted them to DOS line endings so they would open properly on all systems. 2013-05-26 11:06:17 -07:00
README-psp.txt Renamed documentation files to .txt and converted them to DOS line endings so they would open properly on all systems. 2013-05-26 11:06:17 -07:00
README-raspberrypi.txt Fixed typo in documentation. 2014-01-26 23:42:25 +01:00
README-SDL.txt Renamed documentation files to .txt and converted them to DOS line endings so they would open properly on all systems. 2013-05-26 11:06:17 -07:00
README-touch.txt Fixed recently deleted Ms in READMEs. 2013-05-30 12:15:00 +02:00
README-wince.txt Renamed documentation files to .txt and converted them to DOS line endings so they would open properly on all systems. 2013-05-26 11:06:17 -07:00
README-windows.txt OpenGL ES support for Windows 2013-11-22 13:24:53 -03:00
README.txt Added information on reporting bugs to the README.txt file 2013-11-16 10:27:46 -08:00
sdl2-config.in Revert fix for bug 1392 because it breaks linking with mingw32 2013-10-21 10:28:57 -07:00
sdl2.m4 Fixed bug 1976 - SDL2.m4 shares same variables as SDL.m4 so they cache values 2013-07-21 11:52:16 -07:00
sdl2.pc.in Revert fix for bug 1392 because it breaks linking with mingw32 2013-10-21 10:28:57 -07:00
SDL2.spec.in Renamed documentation files to .txt and converted them to DOS line endings so they would open properly on all systems. 2013-05-26 11:06:17 -07:00
TODO.txt Added __WINDOWS__ to reflect both 32 and 64-bit windows platforms 2013-10-20 20:41:30 -07:00
VisualC.html Changed paths and name of header file in text of VisualC.html. 2013-06-29 22:08:38 +02:00
WhatsNew.txt Wayland support 2013-12-14 20:18:43 -03:00

                         Simple DirectMedia Layer

                                  (SDL)

                                Version 2.0

---
http://www.libsdl.org/

Simple DirectMedia Layer is a cross-platform development library designed
to provide low level access to audio, keyboard, mouse, joystick, and graphics
hardware via OpenGL and Direct3D. It is used by video playback software,
emulators, and popular games including Valve's award winning catalog
and many Humble Bundle games.

SDL officially supports Windows, Mac OS X, Linux, iOS, and Android.
Support for other platforms may be found in the source code.

SDL is written in C, works natively with C++, and there are bindings 
available for several other languages, including C# and Python.

This library is distributed under the zlib license, which can be found
in the file "COPYING.txt".

The best way to learn how to use SDL is to check out the header files in
the "include" subdirectory and the programs in the "test" subdirectory.
The header files and test programs are well commented and always up to date.
More documentation and FAQs are available online at:
	http://wiki.libsdl.org/

If you need help with the library, or just want to discuss SDL related
issues, you can join the developers mailing list:
	http://www.libsdl.org/mailing-list.php

If you want to report bugs or contribute patches, please submit them to
bugzilla:
    http://bugzilla.libsdl.org/

Enjoy!
	Sam Lantinga				(slouken@libsdl.org)