src/video/winrt/SDL_winrtvideo_cpp.h
author David Ludwig <dludwig@pobox.com>
Mon, 04 Nov 2013 19:54:29 -0500
changeset 8541 0041edb891f3
parent 8515 bc6cf9201dab
child 8545 7cf4f8916997
permissions -rw-r--r--
WinRT: added experimental OpenGL ES 2.0 support

A port of the ANGLE library (OpenGL ES 2.0 for Direct3D) to WinRT, via https://github.com/stammen/angleproject, is used as a base.

To enable, clone 'angleproject' into the directory one above where SDL/WinRT is, open the file SDL/include/SDL_config_winrt.h, and uncomment the #defines that begin with 'SDL_VIDEO_OPENGL'. From there, apps can create an OpenGL capable SDL_Window via the flag, SDL_WINDOW_OPENGL, and an OpenGL ES 2 context via SDL_GL_CreateContext. The Direct3D 11.1 renderer cannot be used alongside SDL_WINDOW_OPENGL. Only Windows 8/8.1 is supported for now. Shaders may need to be precompiled, in some (all?) cases.
dludwig@8512
     1
/*
dludwig@8512
     2
  Simple DirectMedia Layer
dludwig@8512
     3
  Copyright (C) 1997-2012 Sam Lantinga <slouken@libsdl.org>
dludwig@8512
     4
dludwig@8512
     5
  This software is provided 'as-is', without any express or implied
dludwig@8512
     6
  warranty.  In no event will the authors be held liable for any damages
dludwig@8512
     7
  arising from the use of this software.
dludwig@8512
     8
dludwig@8512
     9
  Permission is granted to anyone to use this software for any purpose,
dludwig@8512
    10
  including commercial applications, and to alter it and redistribute it
dludwig@8512
    11
  freely, subject to the following restrictions:
dludwig@8512
    12
dludwig@8512
    13
  1. The origin of this software must not be misrepresented; you must not
dludwig@8512
    14
     claim that you wrote the original software. If you use this software
dludwig@8512
    15
     in a product, an acknowledgment in the product documentation would be
dludwig@8512
    16
     appreciated but is not required.
dludwig@8512
    17
  2. Altered source versions must be plainly marked as such, and must not be
dludwig@8512
    18
     misrepresented as being the original software.
dludwig@8512
    19
  3. This notice may not be removed or altered from any source distribution.
dludwig@8512
    20
*/
dludwig@8512
    21
dludwig@8512
    22
/* Windows includes: */
dludwig@8512
    23
#include <windows.h>
dludwig@8512
    24
#ifdef __cplusplus_winrt
dludwig@8512
    25
#include <agile.h>
dludwig@8512
    26
#endif
dludwig@8512
    27
dludwig@8512
    28
/* SDL includes: */
dludwig@8541
    29
#include "SDL_video.h"
dludwig@8512
    30
#include "SDL_events.h"
dludwig@8512
    31
dludwig@8541
    32
extern "C" {
dludwig@8541
    33
#include "../SDL_sysvideo.h"
dludwig@8541
    34
#include "SDL_winrtegl.h"
dludwig@8541
    35
}
dludwig@8541
    36
dludwig@8512
    37
dludwig@8515
    38
/* The global, WinRT, SDL Window.
dludwig@8515
    39
   For now, SDL/WinRT only supports one window (due to platform limitations of
dludwig@8515
    40
   WinRT.
dludwig@8515
    41
*/
dludwig@8515
    42
extern SDL_Window * WINRT_GlobalSDLWindow;
dludwig@8515
    43
dludwig@8515
    44
/* The global, WinRT, video device. */
dludwig@8515
    45
extern SDL_VideoDevice * WINRT_GlobalSDLVideoDevice;
dludwig@8515
    46
dludwig@8515
    47
/* Computes the current display mode for Plain Direct3D (non-XAML) apps */
dludwig@8515
    48
extern SDL_DisplayMode WINRT_CalcDisplayModeUsingNativeWindow();
dludwig@8515
    49
dludwig@8515
    50
dludwig@8512
    51
#ifdef __cplusplus_winrt
dludwig@8512
    52
dludwig@8512
    53
/* Internal window data */
dludwig@8512
    54
struct SDL_WindowData
dludwig@8512
    55
{
dludwig@8512
    56
    SDL_Window *sdlWindow;
dludwig@8512
    57
    Platform::Agile<Windows::UI::Core::CoreWindow> coreWindow;
dludwig@8541
    58
#ifdef SDL_VIDEO_OPENGL_EGL
dludwig@8541
    59
    EGLSurface egl_surface;
dludwig@8541
    60
#endif
dludwig@8512
    61
};
dludwig@8512
    62
dludwig@8512
    63
#endif // ifdef __cplusplus_winrt