src/video/x11/SDL_x11gl_c.h
author Ryan C. Gordon <icculus@icculus.org>
Wed, 22 Mar 2006 05:00:59 +0000
changeset 1575 3ba88cb7eb1b
parent 1402 d910939febfa
child 1656 96c2f89cc7e1
permissions -rw-r--r--
Updated dynamic X11 code. See details in Bugzilla #170.
     1 /*
     2     SDL - Simple DirectMedia Layer
     3     Copyright (C) 1997-2006 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 #if SDL_VIDEO_OPENGL_GLX
    25 #include <GL/glx.h>
    26 #include "SDL_loadso.h"
    27 #endif
    28 
    29 #include "../SDL_sysvideo.h"
    30 
    31 struct SDL_PrivateGLData {
    32     int gl_active; /* to stop switching drivers while we have a valid context */
    33 
    34 #if SDL_VIDEO_OPENGL_GLX
    35     GLXContext glx_context;	/* Current GL context */
    36     XVisualInfo* glx_visualinfo; /* XVisualInfo* returned by glXChooseVisual */
    37 
    38     void * (*glXGetProcAddress)(const GLubyte *procName);
    39 
    40     XVisualInfo* (*glXChooseVisual)
    41 		( Display*		dpy,
    42 		  int			screen,
    43 		  int*			attribList );
    44 
    45     GLXContext (*glXCreateContext)
    46 		( Display*		dpy,
    47 		  XVisualInfo*		vis,
    48 		  GLXContext		shareList,
    49 		  Bool			direct );
    50 
    51     void (*glXDestroyContext)
    52 		( Display* 		dpy,
    53 		  GLXContext		ctx );
    54 
    55     Bool (*glXMakeCurrent)
    56 		( Display*		dpy,
    57 		  GLXDrawable		drawable,
    58 		  GLXContext		ctx );
    59 
    60     void (*glXSwapBuffers)
    61 		( Display*		dpy,
    62 		  GLXDrawable		drawable );
    63 
    64     int (*glXGetConfig)
    65 	 ( Display* dpy,
    66 	   XVisualInfo* visual_info,
    67 	   int attrib,
    68 	   int* value );
    69 
    70     const char *(*glXQueryExtensionsString)
    71 	    ( Display* dpy,
    72 	      int screen );
    73 
    74     
    75 #endif /* SDL_VIDEO_OPENGL_GLX */
    76 };
    77 
    78 /* Old variable names */
    79 #define gl_active		(this->gl_data->gl_active)
    80 #define glx_context		(this->gl_data->glx_context)
    81 #define glx_visualinfo		(this->gl_data->glx_visualinfo)
    82 
    83 /* OpenGL functions */
    84 extern XVisualInfo *X11_GL_GetVisual(_THIS);
    85 extern int X11_GL_CreateWindow(_THIS, int w, int h);
    86 extern int X11_GL_CreateContext(_THIS);
    87 extern void X11_GL_Shutdown(_THIS);
    88 #if SDL_VIDEO_OPENGL_GLX
    89 extern int X11_GL_MakeCurrent(_THIS);
    90 extern int X11_GL_GetAttribute(_THIS, SDL_GLattr attrib, int* value);
    91 extern void X11_GL_SwapBuffers(_THIS);
    92 extern int X11_GL_LoadLibrary(_THIS, const char* path);
    93 extern void *X11_GL_GetProcAddress(_THIS, const char* proc);
    94 #endif
    95 extern void X11_GL_UnloadLibrary(_THIS);
    96