src/video/wincommon/SDL_wingl_c.h
author Ryan C. Gordon <icculus@icculus.org>
Fri, 06 Jan 2006 13:20:10 +0000
changeset 1234 73676c1f56ee
parent 769 b8d311d90021
child 1312 c9b51268668f
permissions -rw-r--r--
For sanity's sake, removed the '&' when passing copy_row array to asm.
     1 /*
     2     SDL - Simple DirectMedia Layer
     3     Copyright (C) 1997-2004 Sam Lantinga
     4 
     5     This library is free software; you can redistribute it and/or
     6     modify it under the terms of the GNU Library General Public
     7     License as published by the Free Software Foundation; either
     8     version 2 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     Library General Public License for more details.
    14 
    15     You should have received a copy of the GNU Library General Public
    16     License along with this library; if not, write to the Free
    17     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    18 
    19     Sam Lantinga
    20     slouken@libsdl.org
    21 */
    22 
    23 #ifdef SAVE_RCSID
    24 static char rcsid =
    25  "@(#) $Id$";
    26 #endif
    27 
    28 /* WGL implementation of SDL OpenGL support */
    29 
    30 #include "SDL_sysvideo.h"
    31 
    32 
    33 struct SDL_PrivateGLData {
    34     int gl_active; /* to stop switching drivers while we have a valid context */
    35 
    36 #ifdef HAVE_OPENGL
    37     PIXELFORMATDESCRIPTOR GL_pfd;
    38     HDC GL_hdc;
    39     HGLRC GL_hrc;
    40     int pixel_format;
    41     int wgl_arb_pixel_format;
    42 
    43     void * (WINAPI *wglGetProcAddress)(const char *proc);
    44 
    45     HGLRC (WINAPI *wglCreateContext)(HDC hdc);
    46 
    47     BOOL (WINAPI *wglDeleteContext)(HGLRC hglrc);
    48 
    49     BOOL (WINAPI *wglMakeCurrent)(HDC hdc, HGLRC hglrc);
    50    
    51     BOOL (WINAPI *wglChoosePixelFormatARB)(HDC hdc, const int *piAttribIList,
    52                                            const FLOAT *pfAttribFList,
    53                                            UINT nMaxFormats, int *piFormats,
    54                                            UINT *nNumFormats);
    55     BOOL (WINAPI *wglGetPixelFormatAttribivARB)(HDC hdc, int iPixelFormat,
    56                                                 int iLayerPlane,
    57                                                 UINT nAttributes, 
    58                                                 const int *piAttributes,
    59                                                 int *piValues);
    60 #endif /* HAVE_OPENGL */
    61 };
    62 
    63 /* Old variable names */
    64 #define gl_active	(this->gl_data->gl_active)
    65 #define GL_pfd		(this->gl_data->GL_pfd)
    66 #define GL_hdc		(this->gl_data->GL_hdc)
    67 #define GL_hrc		(this->gl_data->GL_hrc)
    68 #define pixel_format	(this->gl_data->pixel_format)
    69 
    70 /* OpenGL functions */
    71 extern int WIN_GL_SetupWindow(_THIS);
    72 extern void WIN_GL_ShutDown(_THIS);
    73 #ifdef HAVE_OPENGL
    74 extern int WIN_GL_MakeCurrent(_THIS);
    75 extern int WIN_GL_GetAttribute(_THIS, SDL_GLattr attrib, int* value);
    76 extern void WIN_GL_SwapBuffers(_THIS);
    77 extern void WIN_GL_UnloadLibrary(_THIS);
    78 extern int WIN_GL_LoadLibrary(_THIS, const char* path);
    79 extern void *WIN_GL_GetProcAddress(_THIS, const char* proc);
    80 #endif
    81 
    82 #ifdef HAVE_OPENGL
    83 
    84 #ifndef WGL_ARB_pixel_format
    85 #define WGL_NUMBER_PIXEL_FORMATS_ARB   0x2000
    86 #define WGL_DRAW_TO_WINDOW_ARB         0x2001
    87 #define WGL_DRAW_TO_BITMAP_ARB         0x2002
    88 #define WGL_ACCELERATION_ARB           0x2003
    89 #define WGL_NEED_PALETTE_ARB           0x2004
    90 #define WGL_NEED_SYSTEM_PALETTE_ARB    0x2005
    91 #define WGL_SWAP_LAYER_BUFFERS_ARB     0x2006
    92 #define WGL_SWAP_METHOD_ARB            0x2007
    93 #define WGL_NUMBER_OVERLAYS_ARB        0x2008
    94 #define WGL_NUMBER_UNDERLAYS_ARB       0x2009
    95 #define WGL_TRANSPARENT_ARB            0x200A
    96 #define WGL_TRANSPARENT_RED_VALUE_ARB  0x2037
    97 #define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038
    98 #define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039
    99 #define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A
   100 #define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B
   101 #define WGL_SHARE_DEPTH_ARB            0x200C
   102 #define WGL_SHARE_STENCIL_ARB          0x200D
   103 #define WGL_SHARE_ACCUM_ARB            0x200E
   104 #define WGL_SUPPORT_GDI_ARB            0x200F
   105 #define WGL_SUPPORT_OPENGL_ARB         0x2010
   106 #define WGL_DOUBLE_BUFFER_ARB          0x2011
   107 #define WGL_STEREO_ARB                 0x2012
   108 #define WGL_PIXEL_TYPE_ARB             0x2013
   109 #define WGL_COLOR_BITS_ARB             0x2014
   110 #define WGL_RED_BITS_ARB               0x2015
   111 #define WGL_RED_SHIFT_ARB              0x2016
   112 #define WGL_GREEN_BITS_ARB             0x2017
   113 #define WGL_GREEN_SHIFT_ARB            0x2018
   114 #define WGL_BLUE_BITS_ARB              0x2019
   115 #define WGL_BLUE_SHIFT_ARB             0x201A
   116 #define WGL_ALPHA_BITS_ARB             0x201B
   117 #define WGL_ALPHA_SHIFT_ARB            0x201C
   118 #define WGL_ACCUM_BITS_ARB             0x201D
   119 #define WGL_ACCUM_RED_BITS_ARB         0x201E
   120 #define WGL_ACCUM_GREEN_BITS_ARB       0x201F
   121 #define WGL_ACCUM_BLUE_BITS_ARB        0x2020
   122 #define WGL_ACCUM_ALPHA_BITS_ARB       0x2021
   123 #define WGL_DEPTH_BITS_ARB             0x2022
   124 #define WGL_STENCIL_BITS_ARB           0x2023
   125 #define WGL_AUX_BUFFERS_ARB            0x2024
   126 #define WGL_NO_ACCELERATION_ARB        0x2025
   127 #define WGL_GENERIC_ACCELERATION_ARB   0x2026
   128 #define WGL_FULL_ACCELERATION_ARB      0x2027
   129 #define WGL_SWAP_EXCHANGE_ARB          0x2028
   130 #define WGL_SWAP_COPY_ARB              0x2029
   131 #define WGL_SWAP_UNDEFINED_ARB         0x202A
   132 #define WGL_TYPE_RGBA_ARB              0x202B
   133 #define WGL_TYPE_COLORINDEX_ARB        0x202C
   134 #endif
   135 
   136 #ifndef WGL_ARB_multisample
   137 #define WGL_SAMPLE_BUFFERS_ARB         0x2041
   138 #define WGL_SAMPLES_ARB                0x2042
   139 #endif
   140 
   141 #endif