Search
lxdream.org :: lxdream/src/pvr2/glutil.c
lxdream 0.9.1
released Jun 29
Download Now
filename src/pvr2/glutil.c
changeset 653:3202ff01d48e
next667:0e1ac8da75d9
author nkeynes
date Fri Mar 28 12:32:25 2008 +0000 (16 years ago)
permissions -rw-r--r--
last change Merge lxdream-render branch (643:670) to trunk
file annotate diff log raw
nkeynes@653
     1
/**
nkeynes@653
     2
 * $Id$
nkeynes@653
     3
 *
nkeynes@653
     4
 * GL-based support functions 
nkeynes@653
     5
 *
nkeynes@653
     6
 * Copyright (c) 2005 Nathan Keynes.
nkeynes@653
     7
 *
nkeynes@653
     8
 * This program is free software; you can redistribute it and/or modify
nkeynes@653
     9
 * it under the terms of the GNU General Public License as published by
nkeynes@653
    10
 * the Free Software Foundation; either version 2 of the License, or
nkeynes@653
    11
 * (at your option) any later version.
nkeynes@653
    12
 *
nkeynes@653
    13
 * This program is distributed in the hope that it will be useful,
nkeynes@653
    14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
nkeynes@653
    15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
nkeynes@653
    16
 * GNU General Public License for more details.
nkeynes@653
    17
 */
nkeynes@653
    18
#include <string.h>
nkeynes@653
    19
#include "pvr2/glutil.h"
nkeynes@653
    20
nkeynes@653
    21
/**
nkeynes@653
    22
 * Test if a specific extension is supported. From opengl.org
nkeynes@653
    23
 * @param extension extension name to check for
nkeynes@653
    24
 * @return TRUE if supported, otherwise FALSE.
nkeynes@653
    25
 */
nkeynes@653
    26
gboolean isGLExtensionSupported( const char *extension )
nkeynes@653
    27
{
nkeynes@653
    28
    const GLubyte *extensions = NULL;
nkeynes@653
    29
    const GLubyte *start;
nkeynes@653
    30
    GLubyte *where, *terminator;
nkeynes@653
    31
nkeynes@653
    32
    /* Extension names should not have spaces. */
nkeynes@653
    33
    where = (GLubyte *) strchr(extension, ' ');
nkeynes@653
    34
    if (where || *extension == '\0')
nkeynes@653
    35
	return 0;
nkeynes@653
    36
    extensions = glGetString(GL_EXTENSIONS);
nkeynes@653
    37
    if( extensions == NULL ) {
nkeynes@653
    38
	/* No GL available, so we're pretty sure the extension isn't
nkeynes@653
    39
	 * available either. */
nkeynes@653
    40
	return FALSE;
nkeynes@653
    41
    }
nkeynes@653
    42
    /* It takes a bit of care to be fool-proof about parsing the
nkeynes@653
    43
       OpenGL extensions string. Don't be fooled by sub-strings,
nkeynes@653
    44
       etc. */
nkeynes@653
    45
    start = extensions;
nkeynes@653
    46
    for (;;) {
nkeynes@653
    47
	where = (GLubyte *) strstr((const char *) start, extension);
nkeynes@653
    48
	if (!where)
nkeynes@653
    49
	    break;
nkeynes@653
    50
	terminator = where + strlen(extension);
nkeynes@653
    51
	if (where == start || *(where - 1) == ' ')
nkeynes@653
    52
	    if (*terminator == ' ' || *terminator == '\0')
nkeynes@653
    53
		return TRUE;
nkeynes@653
    54
	start = terminator;
nkeynes@653
    55
    }
nkeynes@653
    56
    return FALSE;
nkeynes@653
    57
}
.