glut_ext.c
上传用户:xk288cn
上传日期:2007-05-28
资源大小:4876k
文件大小:1k
源码类别:

GIS编程

开发平台:

Visual C++

  1. /* Copyright (c) Mark J. Kilgard, 1994, 1997. */
  2. /* This program is freely distributable without licensing fees
  3.    and is provided without guarantee or warrantee expressed or
  4.    implied. This program is -not- in the public domain. */
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include "glutint.h"
  8. /* CENTRY */
  9. int APIENTRY 
  10. glutExtensionSupported(const char *extension)
  11. {
  12.   static const GLubyte *extensions = NULL;
  13.   const GLubyte *start;
  14.   GLubyte *where, *terminator;
  15.   /* Extension names should not have spaces. */
  16.   where = (GLubyte *) strchr(extension, ' ');
  17.   if (where || *extension == '')
  18.     return 0;
  19.   if (!extensions) {
  20.     extensions = glGetString(GL_EXTENSIONS);
  21.   }
  22.   /* It takes a bit of care to be fool-proof about parsing the
  23.      OpenGL extensions string.  Don't be fooled by sub-strings,
  24.      etc. */
  25.   start = extensions;
  26.   for (;;) {
  27.     /* If your application crashes in the strstr routine below,
  28.        you are probably calling glutExtensionSupported without
  29.        having a current window.  Calling glGetString without
  30.        a current OpenGL context has unpredictable results.
  31.        Please fix your program. */
  32.     where = (GLubyte *) strstr((const char *) start, extension);
  33.     if (!where)
  34.       break;
  35.     terminator = where + strlen(extension);
  36.     if (where == start || *(where - 1) == ' ') {
  37.       if (*terminator == ' ' || *terminator == '') {
  38.         return 1;
  39.       }
  40.     }
  41.     start = terminator;
  42.   }
  43.   return 0;
  44. }
  45. /* ENDCENTRY */