From c7b646d5b3ef54f81e2a69342416a5c3f31994da Mon Sep 17 00:00:00 2001 From: jpaana <> Date: Wed, 24 Mar 2004 00:22:49 +0000 Subject: [PATCH] Enable more paths --- gl_common.c | 543 ++++++++++++++++++++++---------------------- win/WinQuake.vcproj | 15 +- 2 files changed, 277 insertions(+), 281 deletions(-) diff --git a/gl_common.c b/gl_common.c index f1de679..a67f75d 100644 --- a/gl_common.c +++ b/gl_common.c @@ -232,23 +232,23 @@ void CheckGeforce3Extensions(void) void CheckVertexBufferObject(void) { - if (strstr(gl_extensions, "GL_ARB_vertex_buffer_object") && (!COM_CheckParm ("-forcenovbo")) ) { - //get VBO pointers - SAFE_GET_PROC (qglBindBufferARB, PFNGLBINDBUFFERARBPROC, "glBindBufferARB"); - SAFE_GET_PROC (qglDeleteBuffersARB, PFNGLDELETEBUFFERSARBPROC, "glDeleteBuffersARB"); - SAFE_GET_PROC (qglGenBuffersARB, PFNGLGENBUFFERSARBPROC, "glGenBuffersARB"); - SAFE_GET_PROC (qglIsBufferARB, PFNGLISBUFFERARBPROC, "glIsBufferARB"); - SAFE_GET_PROC (qglBufferDataARB, PFNGLBUFFERDATAARBPROC, "glBufferDataARB"); - SAFE_GET_PROC (qglBufferSubDataARB, PFNGLBUFFERSUBDATAARBPROC, "glBufferSubDataARB"); - SAFE_GET_PROC (qglMapBufferARB, PFNGLMAPBUFFERARBPROC, "glMapBufferARB"); - SAFE_GET_PROC (qglUnmapBufferARB, PFNGLUNMAPBUFFERARBPROC, "glUnmapBufferARB"); - SAFE_GET_PROC (qglGetBufferParameterivARB, PFNGLGETBUFFERPARAMETERIVARBPROC, "glGetBufferParameterivARB"); - SAFE_GET_PROC (qglGetBufferPointervARB, PFNGLGETBUFFERPOINTERVARBPROC, "glGetBufferPointervARB"); - Con_Printf("Vertex buffer object available\n"); - gl_vbo = true; - } else { - gl_vbo = false; - } + if (strstr(gl_extensions, "GL_ARB_vertex_buffer_object") && (!COM_CheckParm ("-forcenovbo")) ) { + //get VBO pointers + SAFE_GET_PROC (qglBindBufferARB, PFNGLBINDBUFFERARBPROC, "glBindBufferARB"); + SAFE_GET_PROC (qglDeleteBuffersARB, PFNGLDELETEBUFFERSARBPROC, "glDeleteBuffersARB"); + SAFE_GET_PROC (qglGenBuffersARB, PFNGLGENBUFFERSARBPROC, "glGenBuffersARB"); + SAFE_GET_PROC (qglIsBufferARB, PFNGLISBUFFERARBPROC, "glIsBufferARB"); + SAFE_GET_PROC (qglBufferDataARB, PFNGLBUFFERDATAARBPROC, "glBufferDataARB"); + SAFE_GET_PROC (qglBufferSubDataARB, PFNGLBUFFERSUBDATAARBPROC, "glBufferSubDataARB"); + SAFE_GET_PROC (qglMapBufferARB, PFNGLMAPBUFFERARBPROC, "glMapBufferARB"); + SAFE_GET_PROC (qglUnmapBufferARB, PFNGLUNMAPBUFFERARBPROC, "glUnmapBufferARB"); + SAFE_GET_PROC (qglGetBufferParameterivARB, PFNGLGETBUFFERPARAMETERIVARBPROC, "glGetBufferParameterivARB"); + SAFE_GET_PROC (qglGetBufferPointervARB, PFNGLGETBUFFERPOINTERVARBPROC, "glGetBufferPointervARB"); + Con_Printf("Vertex buffer object available\n"); + gl_vbo = true; + } else { + gl_vbo = false; + } } @@ -258,152 +258,153 @@ void CheckVertexBufferObject(void) void CheckRadeonExtensions(void) { - int supportedTmu; - glGetIntegerv(GL_MAX_ACTIVE_TEXTURES_ARB,&supportedTmu); + int supportedTmu; + glGetIntegerv(GL_MAX_ACTIVE_TEXTURES_ARB,&supportedTmu); - if (strstr(gl_extensions, "GL_EXT_texture3D") - && (supportedTmu >= 4) && (!COM_CheckParm ("-forcegeneric")) - && strstr(gl_extensions, "GL_ATI_fragment_shader") - && strstr(gl_extensions, "GL_EXT_vertex_shader")) - { - Con_Printf("Using Radeon path.\n"); - gl_cardtype = RADEON; + if (strstr(gl_extensions, "GL_EXT_texture3D") + && (supportedTmu >= 4) && (!COM_CheckParm ("-forcegeneric")) + && strstr(gl_extensions, "GL_ATI_fragment_shader") + && strstr(gl_extensions, "GL_EXT_vertex_shader")) + { + Con_Printf("Using Radeon path.\n"); + gl_cardtype = RADEON; - //get TEX3d pointers - SAFE_GET_PROC (qglTexImage3DEXT,PFNGLTEXIMAGE3DEXT,"glTexImage3DEXT"); + //get TEX3d pointers + SAFE_GET_PROC (qglTexImage3DEXT,PFNGLTEXIMAGE3DEXT,"glTexImage3DEXT"); - //default to trilinear filtering on Radeon - gl_filter_min = GL_LINEAR_MIPMAP_LINEAR; - gl_filter_max = GL_LINEAR; - } + //default to trilinear filtering on Radeon + gl_filter_min = GL_LINEAR_MIPMAP_LINEAR; + gl_filter_max = GL_LINEAR; + } } void CheckParheliaExtensions(void) { - int supportedTmu; - glGetIntegerv(GL_MAX_ACTIVE_TEXTURES_ARB,&supportedTmu); + int supportedTmu; + glGetIntegerv(GL_MAX_ACTIVE_TEXTURES_ARB,&supportedTmu); - if (strstr(gl_extensions, "GL_EXT_texture3D") - && (supportedTmu >= 4) && (COM_CheckParm ("-forceparhelia")) - && strstr(gl_extensions, "GL_MTX_fragment_shader") - && strstr(gl_extensions, "GL_EXT_vertex_shader")) - { - gl_cardtype = PARHELIA; + if (strstr(gl_extensions, "GL_EXT_texture3D") + && (supportedTmu >= 4) && (COM_CheckParm ("-forceparhelia")) + && strstr(gl_extensions, "GL_MTX_fragment_shader") + && strstr(gl_extensions, "GL_EXT_vertex_shader")) + { + gl_cardtype = PARHELIA; - //get TEX3d pointers - SAFE_GET_PROC (qglTexImage3DEXT,PFNGLTEXIMAGE3DEXT,"glTexImage3DEXT"); + //get TEX3d pointers + SAFE_GET_PROC (qglTexImage3DEXT,PFNGLTEXIMAGE3DEXT,"glTexImage3DEXT"); - //default to trilinear filtering on Parhelia - gl_filter_min = GL_LINEAR_MIPMAP_LINEAR; - gl_filter_max = GL_LINEAR; - } + //default to trilinear filtering on Parhelia + gl_filter_min = GL_LINEAR_MIPMAP_LINEAR; + gl_filter_max = GL_LINEAR; + } } void CheckARBFragmentExtensions(void) { - int supportedTmu; - glGetIntegerv(GL_MAX_ACTIVE_TEXTURES_ARB,&supportedTmu); + int supportedTmu; + glGetIntegerv(GL_MAX_ACTIVE_TEXTURES_ARB,&supportedTmu); - if (strstr(gl_extensions, "GL_EXT_texture3D") - && (!COM_CheckParm ("-forcegeneric")) - && (!COM_CheckParm ("-noarb")) - && strstr(gl_extensions, "GL_ARB_fragment_program") - && strstr(gl_extensions, "GL_ARB_vertex_program")) - { - gl_cardtype = ARB; + if (strstr(gl_extensions, "GL_EXT_texture3D") + && (!COM_CheckParm ("-forcegeneric")) + && (!COM_CheckParm ("-noarb")) + && strstr(gl_extensions, "GL_ARB_fragment_program") + && strstr(gl_extensions, "GL_ARB_vertex_program")) + { + gl_cardtype = ARB; - //get TEX3d poiters wlgGetProcAddress - SAFE_GET_PROC (qglTexImage3DEXT,PFNGLTEXIMAGE3DEXT,"glTexImage3DEXT"); + //get TEX3d poiters wlgGetProcAddress + SAFE_GET_PROC (qglTexImage3DEXT,PFNGLTEXIMAGE3DEXT,"glTexImage3DEXT"); - //default to trilinear filtering - gl_filter_min = GL_LINEAR_MIPMAP_LINEAR; - gl_filter_max = GL_LINEAR; - } + //default to trilinear filtering + gl_filter_min = GL_LINEAR_MIPMAP_LINEAR; + gl_filter_max = GL_LINEAR; + } } -void CheckNV3xFragmentExtensions(void) { - int supportedTmu; - glGetIntegerv(GL_MAX_ACTIVE_TEXTURES_ARB,&supportedTmu); +void CheckNV3xFragmentExtensions(void) +{ + int supportedTmu; + glGetIntegerv(GL_MAX_ACTIVE_TEXTURES_ARB,&supportedTmu); - if (strstr(gl_extensions, "GL_EXT_texture3D") - && (!COM_CheckParm ("-forcegeneric")) - && (!COM_CheckParm ("-nonv3x")) + if (strstr(gl_extensions, "GL_EXT_texture3D") + && (!COM_CheckParm ("-forcegeneric")) + && (!COM_CheckParm ("-nonv3x")) - && strstr(gl_extensions, "GL_NV_fragment_program") - && strstr(gl_extensions, "GL_NV_vertex_program2")) - { - gl_cardtype = NV3x; + && strstr(gl_extensions, "GL_NV_fragment_program") + && strstr(gl_extensions, "GL_NV_vertex_program2")) + { + gl_cardtype = NV3x; - //get TEX3d poiters wlgGetProcAddress - SAFE_GET_PROC (qglTexImage3DEXT,PFNGLTEXIMAGE3DEXT,"glTexImage3DEXT"); + //get TEX3d poiters wlgGetProcAddress + SAFE_GET_PROC (qglTexImage3DEXT,PFNGLTEXIMAGE3DEXT,"glTexImage3DEXT"); - //get vertex_program pointers + //get vertex_program pointers - SAFE_GET_PROC (qglAreProgramsResidentNV,PFNGLAREPROGRAMSRESIDENTNVPROC,"glAreProgramsResidentNV"); - SAFE_GET_PROC (qglBindProgramNV,PFNGLBINDPROGRAMNVPROC,"glBindProgramNV"); - SAFE_GET_PROC (qglDeleteProgramsNV,PFNGLDELETEPROGRAMSNVPROC,"glDeleteProgramsNV"); - SAFE_GET_PROC (qglExecuteProgramNV,PFNGLEXECUTEPROGRAMNVPROC,"glExecuteProgramNV"); - SAFE_GET_PROC (qglGenProgramsNV,PFNGLGENPROGRAMSNVPROC,"glGenProgramsNV"); - SAFE_GET_PROC (qglGetProgramParameterdvNV,PFNGLGETPROGRAMPARAMETERDVNVPROC,"glGetProgramParameterdvNV"); - SAFE_GET_PROC (qglGetProgramParameterfvNV,PFNGLGETPROGRAMPARAMETERFVNVPROC,"glGetProgramParameterfvNV"); - SAFE_GET_PROC (qglGetProgramivNV,PFNGLGETPROGRAMIVNVPROC,"glGetProgramivNV"); - SAFE_GET_PROC (qglGetProgramStringNV,PFNGLGETPROGRAMSTRINGNVPROC,"glGetProgramStringNV"); - SAFE_GET_PROC (qglGetTrackMatrixivNV,PFNGLGETTRACKMATRIXIVNVPROC,"glGetTrackMatrixivNV"); - SAFE_GET_PROC (qglGetVertexAttribdvNV,PFNGLGETVERTEXATTRIBDVNVPROC,"glGetVertexAttribdvNV"); - SAFE_GET_PROC (qglGetVertexAttribfvNV,PFNGLGETVERTEXATTRIBFVNVPROC,"glGetVertexAttribfvNV"); - SAFE_GET_PROC (qglGetVertexAttribivNV,PFNGLGETVERTEXATTRIBIVNVPROC,"glGetVertexAttribivNV"); - SAFE_GET_PROC (qglGetVertexAttribPointervNV,PFNGLGETVERTEXATTRIBPOINTERVNVPROC,"glGetVertexAttribPointervNV"); - SAFE_GET_PROC (qglGetVertexAttribPointervNV,PFNGLGETVERTEXATTRIBPOINTERVNVPROC,"glGetVertexAttribPointerNV"); - SAFE_GET_PROC (qglIsProgramNV,PFNGLISPROGRAMNVPROC,"glIsProgramNV"); - SAFE_GET_PROC (qglLoadProgramNV,PFNGLLOADPROGRAMNVPROC,"glLoadProgramNV"); - SAFE_GET_PROC (qglProgramParameter4dNV,PFNGLPROGRAMPARAMETER4DNVPROC,"glProgramParameter4dNV"); - SAFE_GET_PROC (qglProgramParameter4dvNV,PFNGLPROGRAMPARAMETER4DVNVPROC,"glProgramParameter4dvNV"); - SAFE_GET_PROC (qglProgramParameter4fNV,PFNGLPROGRAMPARAMETER4FNVPROC,"glProgramParameter4fNV"); - SAFE_GET_PROC (qglProgramParameter4fvNV,PFNGLPROGRAMPARAMETER4FVNVPROC,"glProgramParameter4fvNV"); - SAFE_GET_PROC (qglProgramParameters4dvNV,PFNGLPROGRAMPARAMETERS4DVNVPROC,"glProgramParameters4dvNV"); - SAFE_GET_PROC (qglProgramParameters4fvNV,PFNGLPROGRAMPARAMETERS4FVNVPROC,"glProgramParameters4fvNV"); - SAFE_GET_PROC (qglRequestResidentProgramsNV,PFNGLREQUESTRESIDENTPROGRAMSNVPROC,"glRequestResidentProgramsNV"); - SAFE_GET_PROC (qglTrackMatrixNV,PFNGLTRACKMATRIXNVPROC,"glTrackMatrixNV"); + SAFE_GET_PROC (qglAreProgramsResidentNV,PFNGLAREPROGRAMSRESIDENTNVPROC,"glAreProgramsResidentNV"); + SAFE_GET_PROC (qglBindProgramNV,PFNGLBINDPROGRAMNVPROC,"glBindProgramNV"); + SAFE_GET_PROC (qglDeleteProgramsNV,PFNGLDELETEPROGRAMSNVPROC,"glDeleteProgramsNV"); + SAFE_GET_PROC (qglExecuteProgramNV,PFNGLEXECUTEPROGRAMNVPROC,"glExecuteProgramNV"); + SAFE_GET_PROC (qglGenProgramsNV,PFNGLGENPROGRAMSNVPROC,"glGenProgramsNV"); + SAFE_GET_PROC (qglGetProgramParameterdvNV,PFNGLGETPROGRAMPARAMETERDVNVPROC,"glGetProgramParameterdvNV"); + SAFE_GET_PROC (qglGetProgramParameterfvNV,PFNGLGETPROGRAMPARAMETERFVNVPROC,"glGetProgramParameterfvNV"); + SAFE_GET_PROC (qglGetProgramivNV,PFNGLGETPROGRAMIVNVPROC,"glGetProgramivNV"); + SAFE_GET_PROC (qglGetProgramStringNV,PFNGLGETPROGRAMSTRINGNVPROC,"glGetProgramStringNV"); + SAFE_GET_PROC (qglGetTrackMatrixivNV,PFNGLGETTRACKMATRIXIVNVPROC,"glGetTrackMatrixivNV"); + SAFE_GET_PROC (qglGetVertexAttribdvNV,PFNGLGETVERTEXATTRIBDVNVPROC,"glGetVertexAttribdvNV"); + SAFE_GET_PROC (qglGetVertexAttribfvNV,PFNGLGETVERTEXATTRIBFVNVPROC,"glGetVertexAttribfvNV"); + SAFE_GET_PROC (qglGetVertexAttribivNV,PFNGLGETVERTEXATTRIBIVNVPROC,"glGetVertexAttribivNV"); + SAFE_GET_PROC (qglGetVertexAttribPointervNV,PFNGLGETVERTEXATTRIBPOINTERVNVPROC,"glGetVertexAttribPointervNV"); + SAFE_GET_PROC (qglGetVertexAttribPointervNV,PFNGLGETVERTEXATTRIBPOINTERVNVPROC,"glGetVertexAttribPointerNV"); + SAFE_GET_PROC (qglIsProgramNV,PFNGLISPROGRAMNVPROC,"glIsProgramNV"); + SAFE_GET_PROC (qglLoadProgramNV,PFNGLLOADPROGRAMNVPROC,"glLoadProgramNV"); + SAFE_GET_PROC (qglProgramParameter4dNV,PFNGLPROGRAMPARAMETER4DNVPROC,"glProgramParameter4dNV"); + SAFE_GET_PROC (qglProgramParameter4dvNV,PFNGLPROGRAMPARAMETER4DVNVPROC,"glProgramParameter4dvNV"); + SAFE_GET_PROC (qglProgramParameter4fNV,PFNGLPROGRAMPARAMETER4FNVPROC,"glProgramParameter4fNV"); + SAFE_GET_PROC (qglProgramParameter4fvNV,PFNGLPROGRAMPARAMETER4FVNVPROC,"glProgramParameter4fvNV"); + SAFE_GET_PROC (qglProgramParameters4dvNV,PFNGLPROGRAMPARAMETERS4DVNVPROC,"glProgramParameters4dvNV"); + SAFE_GET_PROC (qglProgramParameters4fvNV,PFNGLPROGRAMPARAMETERS4FVNVPROC,"glProgramParameters4fvNV"); + SAFE_GET_PROC (qglRequestResidentProgramsNV,PFNGLREQUESTRESIDENTPROGRAMSNVPROC,"glRequestResidentProgramsNV"); + SAFE_GET_PROC (qglTrackMatrixNV,PFNGLTRACKMATRIXNVPROC,"glTrackMatrixNV"); - //default to trilinear filtering - gl_filter_min = GL_LINEAR_MIPMAP_LINEAR; - gl_filter_max = GL_LINEAR; - } + //default to trilinear filtering + gl_filter_min = GL_LINEAR_MIPMAP_LINEAR; + gl_filter_max = GL_LINEAR; + } } -void CheckGL2FragmentExtensions(void) -{ - int supportedTmu; - glGetIntegerv(GL_MAX_ACTIVE_TEXTURES_ARB,&supportedTmu); - - if (strstr(gl_extensions, "GL_EXT_texture3D") - && (!COM_CheckParm ("-forcegeneric")) - && (COM_CheckParm ("-gl2")) - && strstr(gl_extensions, "GL_ARB_shader_objects") - && strstr(gl_extensions, "GL_ARB_vertex_shader") - && strstr(gl_extensions, "GL_ARB_fragment_shader") - && strstr(gl_extensions, "GL_ARB_shading_language_100")) - { - gl_cardtype = GL2; - - //get TEX3d poiters wlgGetProcAddress - SAFE_GET_PROC (qglTexImage3DEXT,PFNGLTEXIMAGE3DEXT,"glTexImage3DEXT"); - - //default to trilinear filtering - gl_filter_min = GL_LINEAR_MIPMAP_LINEAR; - gl_filter_max = GL_LINEAR; - } -} +void CheckGL2FragmentExtensions(void) +{ + int supportedTmu; + glGetIntegerv(GL_MAX_ACTIVE_TEXTURES_ARB,&supportedTmu); + + if (strstr(gl_extensions, "GL_EXT_texture3D") + && (!COM_CheckParm ("-forcegeneric")) + && (COM_CheckParm ("-gl2")) + && strstr(gl_extensions, "GL_ARB_shader_objects") + && strstr(gl_extensions, "GL_ARB_vertex_shader") + && strstr(gl_extensions, "GL_ARB_fragment_shader") + && strstr(gl_extensions, "GL_ARB_shading_language_100")) + { + gl_cardtype = GL2; + + //get TEX3d poiters wlgGetProcAddress + SAFE_GET_PROC (qglTexImage3DEXT,PFNGLTEXIMAGE3DEXT,"glTexImage3DEXT"); + + //default to trilinear filtering + gl_filter_min = GL_LINEAR_MIPMAP_LINEAR; + gl_filter_max = GL_LINEAR; + } +} void CheckAnisotropicExtension(void) { - if (strstr(gl_extensions, "GL_EXT_texture_filter_anisotropic") && - ( COM_CheckParm ("-anisotropic") || COM_CheckParm ("-anisotropy")) ) - { - GLfloat maxanisotropy; + if (strstr(gl_extensions, "GL_EXT_texture_filter_anisotropic") && + ( COM_CheckParm ("-anisotropic") || COM_CheckParm ("-anisotropy")) ) + { + GLfloat maxanisotropy; - if ( COM_CheckParm ("-anisotropy")) +if ( COM_CheckParm ("-anisotropy")) gl_textureanisotropylevel = Q_atoi(com_argv[COM_CheckParm("-anisotropy")+1]); glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &maxanisotropy); @@ -456,133 +457,132 @@ static int supportedTmu; */ void GL_Init (void) { + gl_vendor = glGetString (GL_VENDOR); + Con_Printf ("GL_VENDOR: %s\n", gl_vendor); + gl_renderer = glGetString (GL_RENDERER); + Con_Printf ("GL_RENDERER: %s\n", gl_renderer); - gl_vendor = glGetString (GL_VENDOR); - Con_Printf ("GL_VENDOR: %s\n", gl_vendor); - gl_renderer = glGetString (GL_RENDERER); - Con_Printf ("GL_RENDERER: %s\n", gl_renderer); + gl_version = glGetString (GL_VERSION); + Con_Printf ("GL_VERSION: %s\n", gl_version); + gl_extensions = glGetString (GL_EXTENSIONS); + Con_Printf ("GL_EXTENSIONS: %s\n", gl_extensions); - gl_version = glGetString (GL_VERSION); - Con_Printf ("GL_VERSION: %s\n", gl_version); - gl_extensions = glGetString (GL_EXTENSIONS); - Con_Printf ("GL_EXTENSIONS: %s\n", gl_extensions); + Con_Printf ("%s %s\n", gl_renderer, gl_version); - Con_Printf ("%s %s\n", gl_renderer, gl_version); + Con_Printf ("Checking multitexture\n"); + CheckMultiTextureExtensions (); - Con_Printf ("Checking multitexture\n"); - CheckMultiTextureExtensions (); + Con_Printf ("Checking diffuse bumpmap extensions\n"); + CheckDiffuseBumpMappingExtensions (); - Con_Printf ("Checking diffuse bumpmap extensions\n"); - CheckDiffuseBumpMappingExtensions (); + gl_cardtype = GENERIC; - gl_cardtype = GENERIC; - - Con_Printf ("Checking GL2 extensions\n"); - CheckGL2FragmentExtensions (); - - if ( gl_cardtype == GENERIC ) - { - Con_Printf ("Checking NV3x extensions\n"); - CheckNV3xFragmentExtensions (); - } - - if ( gl_cardtype == GENERIC ) - { - Con_Printf ("Checking ARB extensions\n"); - CheckARBFragmentExtensions (); - } - - if ( gl_cardtype == GENERIC ) - { - Con_Printf ("Checking GeForce 1/2/4-MX\n"); - CheckSpecularBumpMappingExtensions (); - Con_Printf ("Checking GeForce 3/4\n"); - CheckGeforce3Extensions (); - Con_Printf ("Checking Radeon 8500+\n"); - CheckRadeonExtensions (); - Con_Printf ("Checking Parhelia\n"); - CheckParheliaExtensions (); - } + Con_Printf ("Checking GL2 extensions\n"); + CheckGL2FragmentExtensions (); - Con_Printf ("Checking VBO\n"); - CheckVertexBufferObject(); - Con_Printf ("Checking AF\n"); - CheckAnisotropicExtension (); - Con_Printf ("Checking TC\n"); - CheckTextureCompressionExtension (); - Con_Printf ("Checking OT\n"); - CheckOcclusionTest(); - Con_Printf ("Checking MO\n"); - CheckMirrorOnce(); + if ( gl_cardtype == GENERIC ) + { + Con_Printf ("Checking NV3x extensions\n"); + CheckNV3xFragmentExtensions (); + } - //if something goes wrong here throw an sys_error as we don't want to end up - //having invalid function pointers called... - switch (gl_cardtype) - { - /*case GENERIC: - Con_Printf ("Using generic path.\n"); -// Sys_Error("No generic path yet\n"); - BUMP_InitGeneric(); - break; - case GEFORCE: - Con_Printf ("Using GeForce 1/2/4-MX path\n"); -// Sys_Error("No geforce2 path yet\n"); - BUMP_InitGeneric(); // has optimizations for GF cards (some day :) - break; - case GEFORCE3: - Con_Printf ("Using GeForce 3/4 path\n"); - BUMP_InitGeforce3(); - break; - case RADEON: - Con_Printf ("Using Radeon path.\n"); - BUMP_InitRadeon(); - break; - case PARHELIA: - Con_Printf ("Using Parhelia path.\n"); - BUMP_InitParhelia(); - break;*/ - case ARB: - Con_Printf ("Using ARB_fragment_program path.\n"); - BUMP_InitARB(); - break; - /*case NV3x: - Con_Printf ("Using NV_fragment_program path.\n"); - BUMP_InitNV3x(); - break; - case GL2: - Con_Printf ("Using GL2 path.\n"); - BUMP_InitGL2(); - break;*/ - } + if ( gl_cardtype == GENERIC ) + { + Con_Printf ("Checking ARB extensions\n"); + CheckARBFragmentExtensions (); + } + + if ( gl_cardtype == GENERIC ) + { + Con_Printf ("Checking GeForce 1/2/4-MX\n"); + CheckSpecularBumpMappingExtensions (); + Con_Printf ("Checking GeForce 3/4\n"); + CheckGeforce3Extensions (); + Con_Printf ("Checking Radeon 8500+\n"); + CheckRadeonExtensions (); + Con_Printf ("Checking Parhelia\n"); + CheckParheliaExtensions (); + } + + Con_Printf ("Checking VBO\n"); + CheckVertexBufferObject(); + Con_Printf ("Checking AF\n"); + CheckAnisotropicExtension (); + Con_Printf ("Checking TC\n"); + CheckTextureCompressionExtension (); + Con_Printf ("Checking OT\n"); + CheckOcclusionTest(); + Con_Printf ("Checking MO\n"); + CheckMirrorOnce(); + + //if something goes wrong here throw an sys_error as we don't want to end up + //having invalid function pointers called... + switch (gl_cardtype) + { + case GENERIC: + Con_Printf ("Using generic path.\n"); + Sys_Error("No working generic path yet\n"); +// BUMP_InitGeneric(); + break; + case GEFORCE: + Con_Printf ("Using GeForce 1/2/4-MX path\n"); + Sys_Error("No working geforce2 path yet\n"); +// BUMP_InitGeneric(); // has optimizations for GF cards (some day :) + break; + case GEFORCE3: + Con_Printf ("Using GeForce 3/4 path\n"); + BUMP_InitGeforce3(); + break; + case RADEON: + Con_Printf ("Using Radeon path.\n"); + BUMP_InitRadeon(); + break; + case PARHELIA: + Con_Printf ("Using Parhelia path.\n"); + BUMP_InitParhelia(); + break; + case ARB: + Con_Printf ("Using ARB_fragment_program path.\n"); + BUMP_InitARB(); + break; + case NV3x: + Con_Printf ("Using NV_fragment_program path.\n"); + BUMP_InitNV3x(); + break; + case GL2: + Con_Printf ("Using GL2 path.\n"); + BUMP_InitGL2(); + break; + } - GL_InitDriverMem(); - GL_InitVertexCache(); + GL_InitDriverMem(); + GL_InitVertexCache(); - glGetIntegerv (GL_MAX_ACTIVE_TEXTURES_ARB,&supportedTmu); - Con_Printf ("%i texture units\n",supportedTmu); + glGetIntegerv (GL_MAX_ACTIVE_TEXTURES_ARB,&supportedTmu); + Con_Printf ("%i texture units\n",supportedTmu); - //PENTA: enable mlook by default, people kept mailing me about how to do mlook - Cbuf_AddText ("+mlook\n"); + //PENTA: enable mlook by default, people kept mailing me about how to do mlook + Cbuf_AddText ("+mlook\n"); - glClearColor (0.5,0.5,0.5,0.5); - glCullFace (GL_FRONT); - glEnable (GL_TEXTURE_2D); + glClearColor (0.5,0.5,0.5,0.5); + glCullFace (GL_FRONT); + glEnable (GL_TEXTURE_2D); - glEnable (GL_ALPHA_TEST); - glAlphaFunc (GL_GREATER, 0.666f); + glEnable (GL_ALPHA_TEST); + glAlphaFunc (GL_GREATER, 0.666f); - glPolygonMode (GL_FRONT_AND_BACK, GL_FILL); - glShadeModel (GL_FLAT); + glPolygonMode (GL_FRONT_AND_BACK, GL_FILL); + glShadeModel (GL_FLAT); - glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - //glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + //glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); } extern qboolean mtexenabled; @@ -591,39 +591,40 @@ extern qboolean mtexenabled; To get rid of state changes once and for all Don't call this too often tough... */ -void GL_SetupDefaultState(void) { - int i; +void GL_SetupDefaultState(void) +{ + int i; - glMatrixMode(GL_TEXTURE); - for (i=1; i + Name="GL Debug|Win32"> @@ -247,8 +246,7 @@ + Name="GL Debug|Win32"> @@ -265,8 +263,7 @@ + Name="GL Debug|Win32"> @@ -280,8 +277,7 @@ + Name="GL Debug|Win32"> @@ -295,8 +291,7 @@ + Name="GL Debug|Win32">