SDL-1.2.14
[sdl_omap.git] / src / video / wincommon / SDL_wingl_c.h
CommitLineData
e14743d1 1/*
2 SDL - Simple DirectMedia Layer
3 Copyright (C) 1997-2009 Sam Lantinga
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with this library; if not, write to the Free Software
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
19 Sam Lantinga
20 slouken@libsdl.org
21*/
22#include "SDL_config.h"
23
24/* WGL implementation of SDL OpenGL support */
25
26#include "../SDL_sysvideo.h"
27
28
29struct SDL_PrivateGLData {
30 int gl_active; /* to stop switching drivers while we have a valid context */
31
32#if SDL_VIDEO_OPENGL
33 PIXELFORMATDESCRIPTOR GL_pfd;
34 HDC GL_hdc;
35 HGLRC GL_hrc;
36 int pixel_format;
37 int WGL_ARB_pixel_format;
38
39 void * (WINAPI *wglGetProcAddress)(const char *proc);
40
41 HGLRC (WINAPI *wglCreateContext)(HDC hdc);
42
43 BOOL (WINAPI *wglDeleteContext)(HGLRC hglrc);
44
45 BOOL (WINAPI *wglMakeCurrent)(HDC hdc, HGLRC hglrc);
46
47 BOOL (WINAPI *wglGetPixelFormatAttribivARB)(HDC hdc, int iPixelFormat,
48 int iLayerPlane,
49 UINT nAttributes,
50 const int *piAttributes,
51 int *piValues);
52 void (WINAPI *wglSwapIntervalEXT)(int interval);
53 int (WINAPI *wglGetSwapIntervalEXT)(void);
54#endif /* SDL_VIDEO_OPENGL */
55};
56
57/* Old variable names */
58#define gl_active (this->gl_data->gl_active)
59#define GL_pfd (this->gl_data->GL_pfd)
60#define GL_hdc (this->gl_data->GL_hdc)
61#define GL_hrc (this->gl_data->GL_hrc)
62#define pixel_format (this->gl_data->pixel_format)
63
64/* OpenGL functions */
65extern int WIN_GL_SetupWindow(_THIS);
66extern void WIN_GL_ShutDown(_THIS);
67#if SDL_VIDEO_OPENGL
68extern int WIN_GL_MakeCurrent(_THIS);
69extern int WIN_GL_GetAttribute(_THIS, SDL_GLattr attrib, int* value);
70extern void WIN_GL_SwapBuffers(_THIS);
71extern void WIN_GL_UnloadLibrary(_THIS);
72extern int WIN_GL_LoadLibrary(_THIS, const char* path);
73extern void *WIN_GL_GetProcAddress(_THIS, const char* proc);
74#endif
75
76#if SDL_VIDEO_OPENGL
77
78#ifndef WGL_ARB_pixel_format
79#define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000
80#define WGL_DRAW_TO_WINDOW_ARB 0x2001
81#define WGL_DRAW_TO_BITMAP_ARB 0x2002
82#define WGL_ACCELERATION_ARB 0x2003
83#define WGL_NEED_PALETTE_ARB 0x2004
84#define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005
85#define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006
86#define WGL_SWAP_METHOD_ARB 0x2007
87#define WGL_NUMBER_OVERLAYS_ARB 0x2008
88#define WGL_NUMBER_UNDERLAYS_ARB 0x2009
89#define WGL_TRANSPARENT_ARB 0x200A
90#define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037
91#define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038
92#define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039
93#define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A
94#define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B
95#define WGL_SHARE_DEPTH_ARB 0x200C
96#define WGL_SHARE_STENCIL_ARB 0x200D
97#define WGL_SHARE_ACCUM_ARB 0x200E
98#define WGL_SUPPORT_GDI_ARB 0x200F
99#define WGL_SUPPORT_OPENGL_ARB 0x2010
100#define WGL_DOUBLE_BUFFER_ARB 0x2011
101#define WGL_STEREO_ARB 0x2012
102#define WGL_PIXEL_TYPE_ARB 0x2013
103#define WGL_COLOR_BITS_ARB 0x2014
104#define WGL_RED_BITS_ARB 0x2015
105#define WGL_RED_SHIFT_ARB 0x2016
106#define WGL_GREEN_BITS_ARB 0x2017
107#define WGL_GREEN_SHIFT_ARB 0x2018
108#define WGL_BLUE_BITS_ARB 0x2019
109#define WGL_BLUE_SHIFT_ARB 0x201A
110#define WGL_ALPHA_BITS_ARB 0x201B
111#define WGL_ALPHA_SHIFT_ARB 0x201C
112#define WGL_ACCUM_BITS_ARB 0x201D
113#define WGL_ACCUM_RED_BITS_ARB 0x201E
114#define WGL_ACCUM_GREEN_BITS_ARB 0x201F
115#define WGL_ACCUM_BLUE_BITS_ARB 0x2020
116#define WGL_ACCUM_ALPHA_BITS_ARB 0x2021
117#define WGL_DEPTH_BITS_ARB 0x2022
118#define WGL_STENCIL_BITS_ARB 0x2023
119#define WGL_AUX_BUFFERS_ARB 0x2024
120#define WGL_NO_ACCELERATION_ARB 0x2025
121#define WGL_GENERIC_ACCELERATION_ARB 0x2026
122#define WGL_FULL_ACCELERATION_ARB 0x2027
123#define WGL_SWAP_EXCHANGE_ARB 0x2028
124#define WGL_SWAP_COPY_ARB 0x2029
125#define WGL_SWAP_UNDEFINED_ARB 0x202A
126#define WGL_TYPE_RGBA_ARB 0x202B
127#define WGL_TYPE_COLORINDEX_ARB 0x202C
128#endif
129
130#ifndef WGL_ARB_multisample
131#define WGL_SAMPLE_BUFFERS_ARB 0x2041
132#define WGL_SAMPLES_ARB 0x2042
133#endif
134
135#endif