Enable more paths

This commit is contained in:
jpaana 2004-03-24 00:22:49 +00:00
parent df5b42137c
commit c7b646d5b3
2 changed files with 277 additions and 281 deletions

View file

@ -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<supportedTmu; i++) {
glLoadIdentity();
GL_SelectTexture(GL_TEXTURE0_ARB+i);
glDisable(GL_TEXTURE_2D);
qglClientActiveTextureARB(GL_TEXTURE0_ARB+i);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
}
GL_SelectTexture(GL_TEXTURE0_ARB);
glMatrixMode(GL_TEXTURE);
for (i=1; i<supportedTmu; i++) {
glLoadIdentity();
glEnable(GL_TEXTURE_2D);
mtexenabled = false;
GL_SelectTexture(GL_TEXTURE0_ARB+i);
glDisable(GL_TEXTURE_2D);
qglClientActiveTextureARB(GL_TEXTURE0_ARB);
qglClientActiveTextureARB(GL_TEXTURE0_ARB+i);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
}
if (gl_cardtype == ARB) {
//glDisable(GL_FRAGMENT_PROGRAM_ARB);
//glDisable(GL_VERTEX_PROGRAM_ARB);
}
GL_SelectTexture(GL_TEXTURE0_ARB);
glLoadIdentity();
glEnable(GL_TEXTURE_2D);
mtexenabled = false;
glEnable(GL_CULL_FACE);
glCullFace (GL_FRONT);
glDisable(GL_BLEND);
glDisable(GL_ALPHA_TEST);
glAlphaFunc (GL_GREATER, 0.666f);
glMatrixMode(GL_MODELVIEW);
}
qglClientActiveTextureARB(GL_TEXTURE0_ARB);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
if (gl_cardtype == ARB) {
//glDisable(GL_FRAGMENT_PROGRAM_ARB);
//glDisable(GL_VERTEX_PROGRAM_ARB);
}
glEnable(GL_CULL_FACE);
glCullFace (GL_FRONT);
glDisable(GL_BLEND);
glDisable(GL_ALPHA_TEST);
glAlphaFunc (GL_GREATER, 0.666f);
glMatrixMode(GL_MODELVIEW);
}

View file

@ -232,8 +232,7 @@
<File
RelativePath="..\gl_bumpgf.c">
<FileConfiguration
Name="GL Debug|Win32"
ExcludedFromBuild="TRUE">
Name="GL Debug|Win32">
<Tool
Name="VCCLCompilerTool"/>
</FileConfiguration>
@ -247,8 +246,7 @@
<File
RelativePath="..\gl_bumpgl2.c">
<FileConfiguration
Name="GL Debug|Win32"
ExcludedFromBuild="TRUE">
Name="GL Debug|Win32">
<Tool
Name="VCCLCompilerTool"/>
</FileConfiguration>
@ -265,8 +263,7 @@
<File
RelativePath="..\gl_bumpnv3x.c">
<FileConfiguration
Name="GL Debug|Win32"
ExcludedFromBuild="TRUE">
Name="GL Debug|Win32">
<Tool
Name="VCCLCompilerTool"/>
</FileConfiguration>
@ -280,8 +277,7 @@
<File
RelativePath="..\gl_bumpparhelia.c">
<FileConfiguration
Name="GL Debug|Win32"
ExcludedFromBuild="TRUE">
Name="GL Debug|Win32">
<Tool
Name="VCCLCompilerTool"/>
</FileConfiguration>
@ -295,8 +291,7 @@
<File
RelativePath="..\gl_bumpradeon.c">
<FileConfiguration
Name="GL Debug|Win32"
ExcludedFromBuild="TRUE">
Name="GL Debug|Win32">
<Tool
Name="VCCLCompilerTool"/>
</FileConfiguration>