mirror of
https://github.com/Shpoike/Quakespasm.git
synced 2024-11-10 15:31:39 +00:00
better parse for opengl extensions list (from quakeforge.)
git-svn-id: http://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@783 af15c1b1-3010-417e-b628-4374ebc0bcbd
This commit is contained in:
parent
0c81cf1a3f
commit
4b964ab7b1
1 changed files with 35 additions and 9 deletions
|
@ -489,6 +489,8 @@ static char *GL_MakeNiceExtensionsList (const char *in)
|
||||||
char *copy, *token, *out;
|
char *copy, *token, *out;
|
||||||
int i, count;
|
int i, count;
|
||||||
|
|
||||||
|
if (!in) return NULL;
|
||||||
|
|
||||||
//each space will be replaced by 4 chars, so count the spaces before we malloc
|
//each space will be replaced by 4 chars, so count the spaces before we malloc
|
||||||
for (i = 0, count = 1; i < (int) strlen(in); i++)
|
for (i = 0, count = 1; i < (int) strlen(in); i++)
|
||||||
{
|
{
|
||||||
|
@ -530,9 +532,33 @@ static void GL_Info_f (void)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
===============
|
===============
|
||||||
GL_CheckExtensions -- johnfitz
|
GL_CheckExtensions
|
||||||
===============
|
===============
|
||||||
*/
|
*/
|
||||||
|
static qboolean GL_ParseExtensionList (const char *list, const char *name)
|
||||||
|
{
|
||||||
|
const char *start;
|
||||||
|
const char *where, *terminator;
|
||||||
|
|
||||||
|
if (!list || !name || !*name)
|
||||||
|
return false;
|
||||||
|
if (strchr(name, ' ') != NULL)
|
||||||
|
return false; // extension names must not have spaces
|
||||||
|
|
||||||
|
start = list;
|
||||||
|
while (1) {
|
||||||
|
where = strstr (start, name);
|
||||||
|
if (!where)
|
||||||
|
break;
|
||||||
|
terminator = where + strlen (name);
|
||||||
|
if (where == start || where[-1] == ' ')
|
||||||
|
if (*terminator == ' ' || *terminator == '\0')
|
||||||
|
return true;
|
||||||
|
start = terminator;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
static void GL_CheckExtensions (void)
|
static void GL_CheckExtensions (void)
|
||||||
{
|
{
|
||||||
int swap_control;
|
int swap_control;
|
||||||
|
@ -542,7 +568,7 @@ static void GL_CheckExtensions (void)
|
||||||
//
|
//
|
||||||
if (COM_CheckParm("-nomtex"))
|
if (COM_CheckParm("-nomtex"))
|
||||||
Con_Warning ("Mutitexture disabled at command line\n");
|
Con_Warning ("Mutitexture disabled at command line\n");
|
||||||
else if (strstr(gl_extensions, "GL_ARB_multitexture"))
|
else if (GL_ParseExtensionList(gl_extensions, "GL_ARB_multitexture"))
|
||||||
{
|
{
|
||||||
GL_MTexCoord2fFunc = (PFNGLMULTITEXCOORD2FARBPROC) SDL_GL_GetProcAddress("glMultiTexCoord2fARB");
|
GL_MTexCoord2fFunc = (PFNGLMULTITEXCOORD2FARBPROC) SDL_GL_GetProcAddress("glMultiTexCoord2fARB");
|
||||||
GL_SelectTextureFunc = (PFNGLACTIVETEXTUREARBPROC) SDL_GL_GetProcAddress("glActiveTextureARB");
|
GL_SelectTextureFunc = (PFNGLACTIVETEXTUREARBPROC) SDL_GL_GetProcAddress("glActiveTextureARB");
|
||||||
|
@ -558,7 +584,7 @@ static void GL_CheckExtensions (void)
|
||||||
Con_Warning ("Couldn't link to multitexture functions\n");
|
Con_Warning ("Couldn't link to multitexture functions\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (strstr(gl_extensions, "GL_SGIS_multitexture"))
|
else if (GL_ParseExtensionList(gl_extensions, "GL_SGIS_multitexture"))
|
||||||
{
|
{
|
||||||
GL_MTexCoord2fFunc = (PFNGLMULTITEXCOORD2FARBPROC) SDL_GL_GetProcAddress("glMTexCoord2fSGIS");
|
GL_MTexCoord2fFunc = (PFNGLMULTITEXCOORD2FARBPROC) SDL_GL_GetProcAddress("glMTexCoord2fSGIS");
|
||||||
GL_SelectTextureFunc = (PFNGLACTIVETEXTUREARBPROC) SDL_GL_GetProcAddress("glSelectTextureSGIS");
|
GL_SelectTextureFunc = (PFNGLACTIVETEXTUREARBPROC) SDL_GL_GetProcAddress("glSelectTextureSGIS");
|
||||||
|
@ -584,12 +610,12 @@ static void GL_CheckExtensions (void)
|
||||||
//
|
//
|
||||||
if (COM_CheckParm("-nocombine"))
|
if (COM_CheckParm("-nocombine"))
|
||||||
Con_Warning ("texture_env_combine disabled at command line\n");
|
Con_Warning ("texture_env_combine disabled at command line\n");
|
||||||
else if (strstr(gl_extensions, "GL_ARB_texture_env_combine"))
|
else if (GL_ParseExtensionList(gl_extensions, "GL_ARB_texture_env_combine"))
|
||||||
{
|
{
|
||||||
Con_Printf("FOUND: ARB_texture_env_combine\n");
|
Con_Printf("FOUND: ARB_texture_env_combine\n");
|
||||||
gl_texture_env_combine = true;
|
gl_texture_env_combine = true;
|
||||||
}
|
}
|
||||||
else if (strstr(gl_extensions, "GL_EXT_texture_env_combine"))
|
else if (GL_ParseExtensionList(gl_extensions, "GL_EXT_texture_env_combine"))
|
||||||
{
|
{
|
||||||
Con_Printf("FOUND: EXT_texture_env_combine\n");
|
Con_Printf("FOUND: EXT_texture_env_combine\n");
|
||||||
gl_texture_env_combine = true;
|
gl_texture_env_combine = true;
|
||||||
|
@ -604,12 +630,12 @@ static void GL_CheckExtensions (void)
|
||||||
//
|
//
|
||||||
if (COM_CheckParm("-noadd"))
|
if (COM_CheckParm("-noadd"))
|
||||||
Con_Warning ("texture_env_add disabled at command line\n");
|
Con_Warning ("texture_env_add disabled at command line\n");
|
||||||
else if (strstr(gl_extensions, "GL_ARB_texture_env_add"))
|
else if (GL_ParseExtensionList(gl_extensions, "GL_ARB_texture_env_add"))
|
||||||
{
|
{
|
||||||
Con_Printf("FOUND: ARB_texture_env_add\n");
|
Con_Printf("FOUND: ARB_texture_env_add\n");
|
||||||
gl_texture_env_add = true;
|
gl_texture_env_add = true;
|
||||||
}
|
}
|
||||||
else if (strstr(gl_extensions, "GL_EXT_texture_env_add"))
|
else if (GL_ParseExtensionList(gl_extensions, "GL_EXT_texture_env_add"))
|
||||||
{
|
{
|
||||||
Con_Printf("FOUND: EXT_texture_env_add\n");
|
Con_Printf("FOUND: EXT_texture_env_add\n");
|
||||||
gl_texture_env_add = true;
|
gl_texture_env_add = true;
|
||||||
|
@ -622,7 +648,7 @@ static void GL_CheckExtensions (void)
|
||||||
//
|
//
|
||||||
// swap control
|
// swap control
|
||||||
//
|
//
|
||||||
if (strstr(gl_extensions, "GL_EXT_swap_control"))
|
if (GL_ParseExtensionList(gl_extensions, "GL_EXT_swap_control"))
|
||||||
{
|
{
|
||||||
if (SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, 0) == -1)
|
if (SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, 0) == -1)
|
||||||
{
|
{
|
||||||
|
@ -654,7 +680,7 @@ static void GL_CheckExtensions (void)
|
||||||
//
|
//
|
||||||
// anisotropic filtering
|
// anisotropic filtering
|
||||||
//
|
//
|
||||||
if (strstr(gl_extensions, "GL_EXT_texture_filter_anisotropic"))
|
if (GL_ParseExtensionList(gl_extensions, "GL_EXT_texture_filter_anisotropic"))
|
||||||
{
|
{
|
||||||
float test1,test2;
|
float test1,test2;
|
||||||
GLuint tex;
|
GLuint tex;
|
||||||
|
|
Loading…
Reference in a new issue