Simple Directmedia Layer
Go to file
Sam Lantinga d76c2cc1da 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
VisualC Implemented the Dynamic API magic. 2013-12-09 16:03:18 -05: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
acinclude Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03: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 Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03: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
visualtest Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
.hgignore Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
Android.mk Add Dynamic API to Android makefile. 2014-01-08 00:45:29 -05:00
BUGS.txt Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
CMakeLists.txt Move to no-argument version of "endif()" in CMakeLists.txt. 2014-01-28 12:42:01 -05:00
COPYING.txt Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
CREDITS.txt Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
INSTALL.txt Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
Makefile.in Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
Makefile.minimal Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
Makefile.pandora Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
Makefile.psp Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
Makefile.wiz Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
README-SDL.txt Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
README-android.txt Updated paths in README for Android. 2013-12-25 16:53:39 +01:00
README-cmake.txt Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
README-directfb.txt Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03: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 Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
README-hg.txt Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
README-ios.txt Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
README-linux.txt Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
README-macosx.txt Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
README-pandora.txt Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
README-platforms.txt Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
README-porting.txt Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
README-psp.txt Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
README-raspberrypi.txt Fixed typo in documentation. 2014-01-26 23:42:25 +01:00
README-touch.txt Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
README-wince.txt Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
README-windows.txt Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
README.txt Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
SDL2.spec.in Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
TODO.txt Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
VisualC.html Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
WhatsNew.txt Wayland support 2013-12-14 20:18:43 -03:00
autogen.sh Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03: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
sdl2-config.in Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
sdl2.m4 Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
sdl2.pc.in Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00

README.txt

                         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)