SDL_x11gl_c.h
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:3k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*
  2.     SDL - Simple DirectMedia Layer
  3.     Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002  Sam Lantinga
  4.     This library is free software; you can redistribute it and/or
  5.     modify it under the terms of the GNU Library General Public
  6.     License as published by the Free Software Foundation; either
  7.     version 2 of the License, or (at your option) any later version.
  8.     This library is distributed in the hope that it will be useful,
  9.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  11.     Library General Public License for more details.
  12.     You should have received a copy of the GNU Library General Public
  13.     License along with this library; if not, write to the Free
  14.     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  15.     Sam Lantinga
  16.     slouken@libsdl.org
  17. */
  18. #ifdef SAVE_RCSID
  19. static char rcsid =
  20.  "@(#) $Id: SDL_x11gl_c.h,v 1.4 2002/04/22 21:38:05 wmay Exp $";
  21. #endif
  22. #ifdef HAVE_OPENGL
  23. #include <GL/glx.h>
  24. #include <dlfcn.h>
  25. #if defined(__OpenBSD__) && !defined(__ELF__)
  26. #define dlsym(x,y) dlsym(x, "_" y)
  27. #endif
  28. #endif
  29. #include "SDL_sysvideo.h"
  30. struct SDL_PrivateGLData {
  31.     int gl_active; /* to stop switching drivers while we have a valid context */
  32. #ifdef HAVE_OPENGL
  33.     GLXContext glx_context; /* Current GL context */
  34.     XVisualInfo* glx_visualinfo; /* XVisualInfo* returned by glXChooseVisual */
  35.     void * (*glXGetProcAddress)(const GLubyte *procName);
  36.     XVisualInfo* (*glXChooseVisual)
  37. ( Display* dpy,
  38.   int screen,
  39.   int* attribList );
  40.     GLXContext (*glXCreateContext)
  41. ( Display* dpy,
  42.   XVisualInfo* vis,
  43.   GLXContext shareList,
  44.   Bool direct );
  45.     void (*glXDestroyContext)
  46. ( Display*  dpy,
  47.   GLXContext ctx );
  48.     Bool (*glXMakeCurrent)
  49. ( Display* dpy,
  50.   GLXDrawable drawable,
  51.   GLXContext ctx );
  52.     void (*glXSwapBuffers)
  53. ( Display* dpy,
  54.   GLXDrawable drawable );
  55.     int (*glXGetConfig)
  56.  ( Display* dpy,
  57.    XVisualInfo* visual_info,
  58.    int attrib,
  59.    int* value );
  60.     void (*glXReleaseBuffersMESA)
  61.  ( Display* dpy,
  62.    GLXDrawable drawable );
  63. #endif /* HAVE_OPENGL */
  64. };
  65. /* Old variable names */
  66. #define gl_active (this->gl_data->gl_active)
  67. #define glx_context (this->gl_data->glx_context)
  68. #define glx_visualinfo (this->gl_data->glx_visualinfo)
  69. /* OpenGL functions */
  70. extern XVisualInfo *X11_GL_GetVisual(_THIS);
  71. extern int X11_GL_CreateWindow(_THIS, int w, int h);
  72. extern int X11_GL_CreateContext(_THIS);
  73. extern void X11_GL_Shutdown(_THIS);
  74. #ifdef HAVE_OPENGL
  75. extern int X11_GL_MakeCurrent(_THIS);
  76. extern int X11_GL_GetAttribute(_THIS, SDL_GLattr attrib, int* value);
  77. extern void X11_GL_SwapBuffers(_THIS);
  78. extern int X11_GL_LoadLibrary(_THIS, const char* path);
  79. extern void *X11_GL_GetProcAddress(_THIS, const char* proc);
  80. #endif
  81. extern void X11_GL_UnloadLibrary(_THIS);