From 4f4f0c0dabdcf7edfc94734e9619653057628087 Mon Sep 17 00:00:00 2001 From: Tim Angus Date: Mon, 10 Sep 2007 22:28:58 +0000 Subject: [PATCH] * Remove use of GL_ARB_multitexture since this has been part of the core API for many years now --- code/renderer/qgl.h | 22 +++++++++++++--- code/renderer/tr_backend.c | 16 ++++++------ code/renderer/tr_image.c | 6 ++--- code/renderer/tr_init.c | 20 +++------------ code/renderer/tr_local.h | 3 --- code/renderer/tr_shade.c | 4 +-- code/renderer/tr_shader.c | 2 +- code/renderer/tr_types.h | 2 +- code/sdl/sdl_glimp.c | 51 +++++--------------------------------- 9 files changed, 42 insertions(+), 84 deletions(-) diff --git a/code/renderer/qgl.h b/code/renderer/qgl.h index a2ed1234..7ba2658d 100644 --- a/code/renderer/qgl.h +++ b/code/renderer/qgl.h @@ -28,10 +28,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include "SDL_opengl.h" -extern PFNGLMULTITEXCOORD2FARBPROC qglMultiTexCoord2fARB; -extern PFNGLACTIVETEXTUREARBPROC qglActiveTextureARB; -extern PFNGLCLIENTACTIVETEXTUREARBPROC qglClientActiveTextureARB; - extern PFNGLLOCKARRAYSEXTPROC qglLockArraysEXT; extern PFNGLUNLOCKARRAYSEXTPROC qglUnlockArraysEXT; @@ -371,5 +367,23 @@ extern PFNGLUNLOCKARRAYSEXTPROC qglUnlockArraysEXT; #define qglVertex4sv glVertex4sv #define qglVertexPointer glVertexPointer #define qglViewport glViewport +#define qglMultiTexCoord1s glMultiTexCoord1s +#define qglMultiTexCoord1i glMultiTexCoord1i +#define qglMultiTexCoord1f glMultiTexCoord1f +#define qglMultiTexCoord1d glMultiTexCoord1d +#define qglMultiTexCoord2s glMultiTexCoord2s +#define qglMultiTexCoord2i glMultiTexCoord2i +#define qglMultiTexCoord2f glMultiTexCoord2f +#define qglMultiTexCoord2d glMultiTexCoord2d +#define qglMultiTexCoord3s glMultiTexCoord3s +#define qglMultiTexCoord3i glMultiTexCoord3i +#define qglMultiTexCoord3f glMultiTexCoord3f +#define qglMultiTexCoord3d glMultiTexCoord3d +#define qglMultiTexCoord4s glMultiTexCoord4s +#define qglMultiTexCoord4i glMultiTexCoord4i +#define qglMultiTexCoord4f glMultiTexCoord4f +#define qglMultiTexCoord4d glMultiTexCoord4d +#define qglActiveTexture glActiveTexture +#define qglClientActiveTexture glClientActiveTexture #endif diff --git a/code/renderer/tr_backend.c b/code/renderer/tr_backend.c index 2061dd8a..cc1a55a7 100644 --- a/code/renderer/tr_backend.c +++ b/code/renderer/tr_backend.c @@ -71,17 +71,17 @@ void GL_SelectTexture( int unit ) if ( unit == 0 ) { - qglActiveTextureARB( GL_TEXTURE0_ARB ); - GLimp_LogComment( "glActiveTextureARB( GL_TEXTURE0_ARB )\n" ); - qglClientActiveTextureARB( GL_TEXTURE0_ARB ); - GLimp_LogComment( "glClientActiveTextureARB( GL_TEXTURE0_ARB )\n" ); + qglActiveTexture( GL_TEXTURE0 ); + GLimp_LogComment( "glActiveTexture( GL_TEXTURE0 )\n" ); + qglClientActiveTexture( GL_TEXTURE0 ); + GLimp_LogComment( "glClientActiveTexture( GL_TEXTURE0 )\n" ); } else if ( unit == 1 ) { - qglActiveTextureARB( GL_TEXTURE1_ARB ); - GLimp_LogComment( "glActiveTextureARB( GL_TEXTURE1_ARB )\n" ); - qglClientActiveTextureARB( GL_TEXTURE1_ARB ); - GLimp_LogComment( "glClientActiveTextureARB( GL_TEXTURE1_ARB )\n" ); + qglActiveTexture( GL_TEXTURE1 ); + GLimp_LogComment( "glActiveTexture( GL_TEXTURE1 )\n" ); + qglClientActiveTexture( GL_TEXTURE1 ); + GLimp_LogComment( "glClientActiveTexture( GL_TEXTURE1 )\n" ); } else { ri.Error( ERR_DROP, "GL_SelectTexture: unit = %i", unit ); } diff --git a/code/renderer/tr_image.c b/code/renderer/tr_image.c index 37b91c22..1ec33da9 100644 --- a/code/renderer/tr_image.c +++ b/code/renderer/tr_image.c @@ -765,13 +765,13 @@ image_t *R_CreateImage( const char *name, const byte *pic, int width, int height image->wrapClampMode = glWrapClampMode; // lightmaps are always allocated on TMU 1 - if ( qglActiveTextureARB && isLightmap ) { + if ( glConfig.numTextureUnits > 1 && isLightmap ) { image->TMU = 1; } else { image->TMU = 0; } - if ( qglActiveTextureARB ) { + if ( glConfig.numTextureUnits > 1 ) { GL_SelectTexture( image->TMU ); } @@ -4849,7 +4849,7 @@ void R_DeleteTextures( void ) { tr.numImages = 0; Com_Memset( glState.currenttextures, 0, sizeof( glState.currenttextures ) ); - if ( qglActiveTextureARB ) { + if ( glConfig.numTextureUnits > 1 ) { GL_SelectTexture( 1 ); qglBindTexture( GL_TEXTURE_2D, 0 ); GL_SelectTexture( 0 ); diff --git a/code/renderer/tr_init.c b/code/renderer/tr_init.c index 76e0a9df..6caa64f8 100644 --- a/code/renderer/tr_init.c +++ b/code/renderer/tr_init.c @@ -80,8 +80,6 @@ cvar_t *r_nocurves; cvar_t *r_allowExtensions; cvar_t *r_ext_compressed_textures; -cvar_t *r_ext_gamma_control; -cvar_t *r_ext_multitexture; cvar_t *r_ext_compiled_vertex_array; cvar_t *r_ext_texture_env_add; cvar_t *r_ext_texture_filter_anisotropic; @@ -761,7 +759,7 @@ void GL_SetDefaultState( void ) // initialize downstream texture unit if we're running // in a multitexture environment - if ( qglActiveTextureARB ) { + if ( glConfig.numTextureUnits > 1 ) { GL_SelectTexture( 1 ); GL_TextureMode( r_textureMode->string ); GL_TexEnv( GL_MODULATE ); @@ -801,7 +799,6 @@ GfxInfo_f */ void GfxInfo_f( void ) { - cvar_t *sys_cpustring = ri.Cvar_Get( "sys_cpustring", "", 0 ); const char *enablestrings[] = { "disabled", @@ -818,7 +815,7 @@ void GfxInfo_f( void ) ri.Printf( PRINT_ALL, "GL_VERSION: %s\n", glConfig.version_string ); ri.Printf( PRINT_ALL, "GL_EXTENSIONS: %s\n", glConfig.extensions_string ); ri.Printf( PRINT_ALL, "GL_MAX_TEXTURE_SIZE: %d\n", glConfig.maxTextureSize ); - ri.Printf( PRINT_ALL, "GL_MAX_ACTIVE_TEXTURES_ARB: %d\n", glConfig.maxActiveTextures ); + ri.Printf( PRINT_ALL, "GL_MAX_TEXTURE_UNITS: %d\n", glConfig.numTextureUnits ); ri.Printf( PRINT_ALL, "\nPIXELFORMAT: color(%d-bits) Z(%d-bit) stencil(%d-bits)\n", glConfig.colorBits, glConfig.depthBits, glConfig.stencilBits ); ri.Printf( PRINT_ALL, "MODE: %d, %d x %d %s hz:", r_mode->integer, glConfig.vidWidth, glConfig.vidHeight, fsstrings[r_fullscreen->integer == 1] ); if ( glConfig.displayFrequency ) @@ -837,7 +834,6 @@ void GfxInfo_f( void ) { ri.Printf( PRINT_ALL, "GAMMA: software w/ %d overbright bits\n", tr.overbrightBits ); } - ri.Printf( PRINT_ALL, "CPU: %s\n", sys_cpustring->string ); // rendering primitives { @@ -867,7 +863,7 @@ void GfxInfo_f( void ) ri.Printf( PRINT_ALL, "texturemode: %s\n", r_textureMode->string ); ri.Printf( PRINT_ALL, "picmip: %d\n", r_picmip->integer ); ri.Printf( PRINT_ALL, "texture bits: %d\n", r_texturebits->integer ); - ri.Printf( PRINT_ALL, "multitexture: %s\n", enablestrings[qglActiveTextureARB != 0] ); + ri.Printf( PRINT_ALL, "multitexture: %s\n", enablestrings[glConfig.numTextureUnits > 1] ); ri.Printf( PRINT_ALL, "compiled vertex arrays: %s\n", enablestrings[qglLockArraysEXT != 0 ] ); ri.Printf( PRINT_ALL, "texenv add: %s\n", enablestrings[glConfig.textureEnvAddAvailable != 0] ); ri.Printf( PRINT_ALL, "compressed textures: %s\n", enablestrings[glConfig.textureCompression!=TC_NONE] ); @@ -903,14 +899,8 @@ void R_Register( void ) // r_allowExtensions = ri.Cvar_Get( "r_allowExtensions", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_compressed_textures = ri.Cvar_Get( "r_ext_compressed_textures", "0", CVAR_ARCHIVE | CVAR_LATCH ); - r_ext_gamma_control = ri.Cvar_Get( "r_ext_gamma_control", "1", CVAR_ARCHIVE | CVAR_LATCH ); - r_ext_multitexture = ri.Cvar_Get( "r_ext_multitexture", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_compiled_vertex_array = ri.Cvar_Get( "r_ext_compiled_vertex_array", "1", CVAR_ARCHIVE | CVAR_LATCH); -#ifdef __linux__ // broken on linux - r_ext_texture_env_add = ri.Cvar_Get( "r_ext_texture_env_add", "0", CVAR_ARCHIVE | CVAR_LATCH); -#else r_ext_texture_env_add = ri.Cvar_Get( "r_ext_texture_env_add", "1", CVAR_ARCHIVE | CVAR_LATCH); -#endif r_ext_texture_filter_anisotropic = ri.Cvar_Get( "r_ext_texture_filter_anisotropic", "0", CVAR_ARCHIVE | CVAR_LATCH ); @@ -924,11 +914,7 @@ void R_Register( void ) r_texturebits = ri.Cvar_Get( "r_texturebits", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_colorbits = ri.Cvar_Get( "r_colorbits", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_stereo = ri.Cvar_Get( "r_stereo", "0", CVAR_ARCHIVE | CVAR_LATCH ); -#ifdef __linux__ - r_stencilbits = ri.Cvar_Get( "r_stencilbits", "0", CVAR_ARCHIVE | CVAR_LATCH ); -#else r_stencilbits = ri.Cvar_Get( "r_stencilbits", "8", CVAR_ARCHIVE | CVAR_LATCH ); -#endif r_depthbits = ri.Cvar_Get( "r_depthbits", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_overBrightBits = ri.Cvar_Get ("r_overBrightBits", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_ignorehwgamma = ri.Cvar_Get( "r_ignorehwgamma", "0", CVAR_ARCHIVE | CVAR_LATCH); diff --git a/code/renderer/tr_local.h b/code/renderer/tr_local.h index d68e79c5..a91ae164 100644 --- a/code/renderer/tr_local.h +++ b/code/renderer/tr_local.h @@ -1041,9 +1041,6 @@ extern cvar_t *r_ignorehwgamma; // overrides hardware gamma capabilities extern cvar_t *r_allowExtensions; // global enable/disable of OpenGL extensions extern cvar_t *r_ext_compressed_textures; // these control use of specific extensions -extern cvar_t *r_ext_gamma_control; -extern cvar_t *r_ext_texenv_op; -extern cvar_t *r_ext_multitexture; extern cvar_t *r_ext_compiled_vertex_array; extern cvar_t *r_ext_texture_env_add; diff --git a/code/renderer/tr_shade.c b/code/renderer/tr_shade.c index 6f22b7c2..324f52c9 100644 --- a/code/renderer/tr_shade.c +++ b/code/renderer/tr_shade.c @@ -43,8 +43,8 @@ This is just for OpenGL conformance testing, it should never be the fastest static void APIENTRY R_ArrayElementDiscrete( GLint index ) { qglColor4ubv( tess.svars.colors[ index ] ); if ( glState.currenttmu ) { - qglMultiTexCoord2fARB( 0, tess.svars.texcoords[ 0 ][ index ][0], tess.svars.texcoords[ 0 ][ index ][1] ); - qglMultiTexCoord2fARB( 1, tess.svars.texcoords[ 1 ][ index ][0], tess.svars.texcoords[ 1 ][ index ][1] ); + qglMultiTexCoord2f( 0, tess.svars.texcoords[ 0 ][ index ][0], tess.svars.texcoords[ 0 ][ index ][1] ); + qglMultiTexCoord2f( 1, tess.svars.texcoords[ 1 ][ index ][0], tess.svars.texcoords[ 1 ][ index ][1] ); } else { qglTexCoord2fv( tess.svars.texcoords[ 0 ][ index ] ); } diff --git a/code/renderer/tr_shader.c b/code/renderer/tr_shader.c index 275e32db..8aa9f655 100644 --- a/code/renderer/tr_shader.c +++ b/code/renderer/tr_shader.c @@ -1761,7 +1761,7 @@ static qboolean CollapseMultitexture( void ) { int i; textureBundle_t tmpBundle; - if ( !qglActiveTextureARB ) { + if ( glConfig.numTextureUnits < 2 ) { return qfalse; } diff --git a/code/renderer/tr_types.h b/code/renderer/tr_types.h index 4edbaf53..bb917cfa 100644 --- a/code/renderer/tr_types.h +++ b/code/renderer/tr_types.h @@ -175,7 +175,7 @@ typedef struct { char extensions_string[BIG_INFO_STRING]; int maxTextureSize; // queried from GL - int maxActiveTextures; // multitexture ability + int numTextureUnits; // multitexture ability int colorBits, depthBits, stencilBits; diff --git a/code/sdl/sdl_glimp.c b/code/sdl/sdl_glimp.c index b75380b1..bd2dc246 100644 --- a/code/sdl/sdl_glimp.c +++ b/code/sdl/sdl_glimp.c @@ -70,10 +70,6 @@ static SDL_Surface *screen = NULL; cvar_t *r_allowSoftwareGL; // Don't abort out if a hardware visual can't be obtained -PFNGLMULTITEXCOORD2FARBPROC qglMultiTexCoord2fARB; -PFNGLACTIVETEXTUREARBPROC qglActiveTextureARB; -PFNGLCLIENTACTIVETEXTUREARBPROC qglClientActiveTextureARB; - PFNGLLOCKARRAYSEXTPROC qglLockArraysEXT; PFNGLUNLOCKARRAYSEXTPROC qglUnlockArraysEXT; @@ -380,46 +376,6 @@ static void GLimp_InitExtensions( void ) ri.Printf( PRINT_ALL, "...GL_EXT_texture_env_add not found\n" ); } - // GL_ARB_multitexture - qglMultiTexCoord2fARB = NULL; - qglActiveTextureARB = NULL; - qglClientActiveTextureARB = NULL; - if ( Q_stristr( glConfig.extensions_string, "GL_ARB_multitexture" ) ) - { - if ( r_ext_multitexture->value ) - { - qglMultiTexCoord2fARB = ( PFNGLMULTITEXCOORD2FARBPROC ) SDL_GL_GetProcAddress( "glMultiTexCoord2fARB" ); - qglActiveTextureARB = ( PFNGLACTIVETEXTUREARBPROC ) SDL_GL_GetProcAddress( "glActiveTextureARB" ); - qglClientActiveTextureARB = ( PFNGLCLIENTACTIVETEXTUREARBPROC ) SDL_GL_GetProcAddress( "glClientActiveTextureARB" ); - - if ( qglActiveTextureARB ) - { - GLint glint = 0; - qglGetIntegerv( GL_MAX_TEXTURE_UNITS_ARB, &glint ); - glConfig.maxActiveTextures = (int) glint; - if ( glConfig.maxActiveTextures > 1 ) - { - ri.Printf( PRINT_ALL, "...using GL_ARB_multitexture\n" ); - } - else - { - qglMultiTexCoord2fARB = NULL; - qglActiveTextureARB = NULL; - qglClientActiveTextureARB = NULL; - ri.Printf( PRINT_ALL, "...not using GL_ARB_multitexture, < 2 texture units\n" ); - } - } - } - else - { - ri.Printf( PRINT_ALL, "...ignoring GL_ARB_multitexture\n" ); - } - } - else - { - ri.Printf( PRINT_ALL, "...GL_ARB_multitexture not found\n" ); - } - // GL_EXT_compiled_vertex_array if ( Q_stristr( glConfig.extensions_string, "GL_EXT_compiled_vertex_array" ) ) { @@ -490,7 +446,7 @@ void GLimp_Init( void ) { if( r_mode->integer != R_MODE_FALLBACK ) { - ri.Printf( PRINT_ALL, "Setting r_mode %d failed, falling back on r_mode %d", + ri.Printf( PRINT_ALL, "Setting r_mode %d failed, falling back on r_mode %d\n", r_mode->integer, R_MODE_FALLBACK ); if( !GLimp_StartDriverAndSetMode( R_MODE_FALLBACK, r_fullscreen->integer ) ) success = qfalse; @@ -515,6 +471,11 @@ void GLimp_Init( void ) Q_strncpyz( glConfig.version_string, (char *) qglGetString (GL_VERSION), sizeof( glConfig.version_string ) ); Q_strncpyz( glConfig.extensions_string, (char *) qglGetString (GL_EXTENSIONS), sizeof( glConfig.extensions_string ) ); + // multitexturing + qglGetIntegerv( GL_MAX_TEXTURE_UNITS, (GLint *)&glConfig.numTextureUnits ); + if( glConfig.numTextureUnits < 2 ) + ri.Printf( PRINT_ALL, "Insufficient texture units for multitexturing\n" ); + // initialize extensions GLimp_InitExtensions( );