From c660e0162f092fa04604f65a40911569ffe7dba1 Mon Sep 17 00:00:00 2001 From: OM Date: Mon, 22 May 2023 13:02:14 +0200 Subject: [PATCH] Added compressed textures support --- code/unix/linux_glimp.c | 40 +++++++++++++++++++++++++--------------- code/unix/linux_qgl.c | 18 ------------------ code/win32/win_glimp.c | 15 +++++++++++++-- code/win32/win_qgl.c | 12 ------------ 4 files changed, 38 insertions(+), 47 deletions(-) diff --git a/code/unix/linux_glimp.c b/code/unix/linux_glimp.c index 37d441d3..33d57a28 100644 --- a/code/unix/linux_glimp.c +++ b/code/unix/linux_glimp.c @@ -1160,23 +1160,33 @@ static void GLW_InitExtensions( void ) ri.Printf( PRINT_ALL, "Initializing OpenGL extensions\n" ); // GL_S3_s3tc - if ( Q_stristr( glConfig.extensions_string, "GL_S3_s3tc" ) ) + if (strstr(glConfig.extensions_string, "GL_EXT_texture_compression_s3tc") && strstr(glConfig.extensions_string, "GL_ARB_texture_compression")) { - if ( r_ext_compressed_textures->value ) - { - glConfig.textureCompression = TC_S3TC; - ri.Printf( PRINT_ALL, "...using GL_S3_s3tc\n" ); - } else - { - glConfig.textureCompression = TC_NONE; - ri.Printf( PRINT_ALL, "...ignoring GL_S3_s3tc\n" ); - } - } else - { - glConfig.textureCompression = TC_NONE; - ri.Printf( PRINT_ALL, "...GL_S3_s3tc not found\n" ); + if (r_ext_compressed_textures->integer) + { + qglCompressedTexImage2DARB = dlsym(glw_state.OpenGLLib, "glCompressedTexImage2DARB"); + glConfig.textureCompression = TC_S3TC; + ri.Printf(PRINT_ALL, "...using GL_S3_s3tc\n"); + } + else + { + glConfig.textureCompression = TC_NONE; + ri.Printf(PRINT_ALL, "...ignoring GL_S3_s3tc\n"); + } + } + else if (!strstr(glConfig.extensions_string, "GL_EXT_texture_compression_s3tc")) + { + ri.Printf(PRINT_ALL, "...GL_ARB_texture_compression not found\n"); + } + else if (strstr(glConfig.extensions_string, "GL_ARB_texture_compression")) + { + ri.Printf(PRINT_ALL, "...GL_EXT_texture_compression_s3tc not found\n"); + } + else + { + ri.Printf(PRINT_ALL, "...GL_EXT_texture_compression_s3tc not found\n"); + ri.Printf(PRINT_ALL, "...GL_ARB_texture_compression not found\n"); } - // GL_EXT_texture_env_add glConfig.textureEnvAddAvailable = qfalse; if ( Q_stristr( glConfig.extensions_string, "EXT_texture_env_add" ) ) diff --git a/code/unix/linux_qgl.c b/code/unix/linux_qgl.c index b736cac2..35c3f76c 100644 --- a/code/unix/linux_qgl.c +++ b/code/unix/linux_qgl.c @@ -3006,12 +3006,6 @@ void QGL_Shutdown( void ) qglVertexPointer = NULL; qglViewport = NULL; - qglCompressedTexImage3DARB = NULL; - qglCompressedTexImage2DARB = NULL; - qglCompressedTexSubImage3DARB = NULL; - qglCompressedTexSubImage2DARB = NULL; - qglGetCompressedTexImageARB = NULL; - // bk001129 - from cvs1.17 (mkv) #if defined(__FX__) qfxMesaCreateContext = NULL; @@ -3409,12 +3403,6 @@ qboolean QGL_Init( const char *dllname ) qglVertexPointer = dllVertexPointer = GPA( "glVertexPointer" ); qglViewport = dllViewport = GPA( "glViewport" ); - qglCompressedTexImage3DARB = dllCompressedTexImage3DARB = GPA("glCompressedTexImage3DARB"); - qglCompressedTexImage2DARB = dllCompressedTexImage2DARB = GPA("qglCompressedTexImage2DARB"); - qglCompressedTexSubImage3DARB = dllCompressedTexSubImage3DARB = GPA("qglCompressedTexSubImage3DARB"); - qglCompressedTexSubImage2DARB = dllCompressedTexSubImage2DARB = GPA("qglCompressedTexSubImage2DARB"); - qglGetCompressedTexImageARB = dllGetCompressedTexImageARB = GPA("qglGetCompressedTexImageARB"); - // bk001129 - from cvs1.17 (mkv) #if defined(__FX__) qfxMesaCreateContext = GPA("fxMesaCreateContext"); @@ -4165,12 +4153,6 @@ void QGL_EnableLogging( qboolean enable ) { qglVertex4sv = dllVertex4sv ; qglVertexPointer = dllVertexPointer ; qglViewport = dllViewport ; - - qglCompressedTexImage3DARB = dllCompressedTexImage3DARB; - qglCompressedTexImage2DARB = dllCompressedTexImage2DARB; - qglCompressedTexSubImage3DARB = dllCompressedTexSubImage3DARB; - qglCompressedTexSubImage2DARB = dllCompressedTexSubImage2DARB; - qglGetCompressedTexImageARB = dllGetCompressedTexImageARB; } } diff --git a/code/win32/win_glimp.c b/code/win32/win_glimp.c index bd382ce7..ecc02546 100644 --- a/code/win32/win_glimp.c +++ b/code/win32/win_glimp.c @@ -970,11 +970,13 @@ static void GLW_InitExtensions( void ) ri.Printf( PRINT_ALL, "Initializing OpenGL extensions\n" ); // GL_S3_s3tc + qglCompressedTexImage2DARB = NULL; glConfig.textureCompression = TC_NONE; - if ( strstr( glConfig.extensions_string, "GL_S3_s3tc" ) ) + if ( strstr( glConfig.extensions_string, "GL_EXT_texture_compression_s3tc" ) && strstr(glConfig.extensions_string, "GL_ARB_texture_compression")) { if ( r_ext_compressed_textures->integer ) { + qglCompressedTexImage2DARB = wglGetProcAddress("glCompressedTexImage2DARB"); glConfig.textureCompression = TC_S3TC; ri.Printf( PRINT_ALL, "...using GL_S3_s3tc\n" ); } @@ -984,9 +986,18 @@ static void GLW_InitExtensions( void ) ri.Printf( PRINT_ALL, "...ignoring GL_S3_s3tc\n" ); } } + else if (!strstr(glConfig.extensions_string, "GL_EXT_texture_compression_s3tc")) + { + ri.Printf(PRINT_ALL, "...GL_ARB_texture_compression not found\n"); + } + else if (strstr(glConfig.extensions_string, "GL_ARB_texture_compression")) + { + ri.Printf(PRINT_ALL, "...GL_EXT_texture_compression_s3tc not found\n"); + } else { - ri.Printf( PRINT_ALL, "...GL_S3_s3tc not found\n" ); + ri.Printf(PRINT_ALL, "...GL_EXT_texture_compression_s3tc not found\n"); + ri.Printf(PRINT_ALL, "...GL_ARB_texture_compression not found\n"); } // GL_EXT_texture_env_add diff --git a/code/win32/win_qgl.c b/code/win32/win_qgl.c index 7451088c..b7bfdf5f 100644 --- a/code/win32/win_qgl.c +++ b/code/win32/win_qgl.c @@ -3628,12 +3628,6 @@ qboolean QGL_Init( const char *dllname ) qglVertexPointer = dllVertexPointer = GPA( "glVertexPointer" ); qglViewport = dllViewport = GPA( "glViewport" ); - qglCompressedTexImage3DARB = dllCompressedTexImage3DARB = GPA("glCompressedTexImage3D"); - qglCompressedTexImage2DARB = dllCompressedTexImage2DARB = GPA("glCompressedTexImage2D"); - qglCompressedTexSubImage3DARB = dllCompressedTexSubImage3DARB = GPA("glCompressedTexSubImage3D"); - qglCompressedTexSubImage2DARB = dllCompressedTexSubImage2DARB = GPA("glCompressedTexSubImage2D"); - qglGetCompressedTexImageARB = dllGetCompressedTexImageARB = GPA("glGetCompressedTexImage"); - qwglCopyContext = GPA( "wglCopyContext" ); qwglCreateContext = GPA( "wglCreateContext" ); qwglCreateLayerContext = GPA( "wglCreateLayerContext" ); @@ -4393,12 +4387,6 @@ void QGL_EnableLogging( qboolean enable ) qglVertex4sv = dllVertex4sv ; qglVertexPointer = dllVertexPointer ; qglViewport = dllViewport ; - - qglCompressedTexImage3DARB = dllCompressedTexImage3DARB; - qglCompressedTexImage2DARB = dllCompressedTexImage2DARB; - qglCompressedTexSubImage3DARB = dllCompressedTexSubImage3DARB; - qglCompressedTexSubImage2DARB = dllCompressedTexSubImage2DARB; - qglGetCompressedTexImageARB = dllGetCompressedTexImageARB; } }