/* Copyright (c) Mark J. Kilgard, 1994, 1997. */ /* This program is freely distributable without licensing fees and is provided without guarantee or warrantee expressed or implied. This program is -not- in the public domain. */ #include #include #include "glutint.h" /* CENTRY */ int APIENTRY glutExtensionSupported(const char *extension) { static const GLubyte *extensions = NULL; const GLubyte *start; GLubyte *where, *terminator; /* Extension names should not have spaces. */ where = (GLubyte *) strchr(extension, ' '); if (where || *extension == '\0') return 0; if (!extensions) { extensions = glGetString(GL_EXTENSIONS); } /* It takes a bit of care to be fool-proof about parsing the OpenGL extensions string. Don't be fooled by sub-strings, etc. */ start = extensions; for (;;) { /* If your application crashes in the strstr routine below, you are probably calling glutExtensionSupported without having a current window. Calling glGetString without a current OpenGL context has unpredictable results. Please fix your program. */ where = (GLubyte *) strstr((const char *) start, extension); if (!where) break; terminator = where + strlen(extension); if (where == start || *(where - 1) == ' ') { if (*terminator == ' ' || *terminator == '\0') { return 1; } } start = terminator; } return 0; } /* ENDCENTRY */