src/video/x11/SDL_x11gl_c.h
author Sam Lantinga <slouken@libsdl.org>
Wed, 06 Mar 2002 11:23:08 +0000
changeset 297 f6ffac90895c
parent 252 e8157fcb3114
child 638 b0108e9dea53
permissions -rw-r--r--
Updated copyright information for 2002
     1 /*
     2     SDL - Simple DirectMedia Layer
     3     Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002  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 #ifdef HAVE_OPENGL
    29 #include <GL/glx.h>
    30 #include <dlfcn.h>
    31 #if defined(__OpenBSD__) && !defined(__ELF__)
    32 #define dlsym(x,y) dlsym(x, "_" y)
    33 #endif
    34 #endif
    35 #include "SDL_sysvideo.h"
    36 
    37 struct SDL_PrivateGLData {
    38     int gl_active; /* to stop switching drivers while we have a valid context */
    39 
    40 #ifdef HAVE_OPENGL
    41     GLXContext glx_context;	/* Current GL context */
    42     XVisualInfo* glx_visualinfo; /* XVisualInfo* returned by glXChooseVisual */
    43 
    44     void * (*glXGetProcAddress)(const GLubyte *procName);
    45 
    46     XVisualInfo* (*glXChooseVisual)
    47 		( Display*		dpy,
    48 		  int			screen,
    49 		  int*		attribList );
    50 
    51     GLXContext (*glXCreateContext)
    52 		( Display*		dpy,
    53 		  XVisualInfo*	vis,
    54 		  GLXContext		shareList,
    55 		  Bool		direct );
    56 
    57     void (*glXDestroyContext)
    58 		( Display* 		dpy,
    59 		  GLXContext		ctx );
    60 
    61     Bool (*glXMakeCurrent)
    62 		( Display*		dpy,
    63 		  GLXDrawable		drawable,
    64 		  GLXContext		ctx );
    65 
    66     void (*glXSwapBuffers)
    67 		( Display*		dpy,
    68 		  GLXDrawable		drawable );
    69 
    70     int (*glXGetConfig)
    71 	 ( Display* dpy,
    72 	   XVisualInfo* visual_info,
    73 	   int attrib,
    74 	   int* value );
    75 
    76     void (*glXReleaseBuffersMESA)
    77 	 ( Display* dpy,
    78 	   GLXDrawable drawable );
    79 
    80 #endif /* HAVE_OPENGL */
    81 };
    82 
    83 /* Old variable names */
    84 #define gl_active		(this->gl_data->gl_active)
    85 #define glx_context		(this->gl_data->glx_context)
    86 #define glx_visualinfo		(this->gl_data->glx_visualinfo)
    87 
    88 /* OpenGL functions */
    89 extern XVisualInfo *X11_GL_GetVisual(_THIS);
    90 extern int X11_GL_CreateWindow(_THIS, int w, int h);
    91 extern int X11_GL_CreateContext(_THIS);
    92 extern void X11_GL_Shutdown(_THIS);
    93 #ifdef HAVE_OPENGL
    94 extern int X11_GL_MakeCurrent(_THIS);
    95 extern int X11_GL_GetAttribute(_THIS, SDL_GLattr attrib, int* value);
    96 extern void X11_GL_SwapBuffers(_THIS);
    97 extern int X11_GL_LoadLibrary(_THIS, const char* path);
    98 extern void *X11_GL_GetProcAddress(_THIS, const char* proc);
    99 #endif
   100 extern void X11_GL_UnloadLibrary(_THIS);
   101