add anisotropic texture filtering suport (d1x r1.33, r1.32, r1.23, r1.32)
This commit is contained in:
parent
730b28ef61
commit
ad42e7c895
|
@ -1,5 +1,9 @@
|
|||
2004-05-19 Matthew Mueller <donut@dakotacom.net>
|
||||
|
||||
* arch/ogl/gr.c, arch/ogl/ogl.c, include/ogl_init.h,
|
||||
main/inferno.c: add anisotropic texture filtering suport (d1x
|
||||
r1.33, r1.32, r1.23, r1.32)
|
||||
|
||||
* arch/ogl/ogl.c: make RENDERSTATS show size of color/depth buffer
|
||||
too (d1x r1.31)
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: gr.c,v 1.22 2004-05-20 03:31:31 btb Exp $ */
|
||||
/* $Id: gr.c,v 1.23 2004-05-20 05:15:55 btb Exp $ */
|
||||
/*
|
||||
*
|
||||
* OGL video functions. - Added 9/15/99 Matthew Mueller
|
||||
|
@ -163,6 +163,8 @@ const char *gl_vendor,*gl_renderer,*gl_version,*gl_extensions;
|
|||
void ogl_get_verinfo(void)
|
||||
{
|
||||
int t, arb_max_textures = -1, sgi_max_textures = -1;
|
||||
float anisotropic_max = 0;
|
||||
|
||||
gl_vendor=glGetString(GL_VENDOR);
|
||||
gl_renderer=glGetString(GL_RENDERER);
|
||||
gl_version=glGetString(GL_VERSION);
|
||||
|
@ -193,6 +195,10 @@ void ogl_get_verinfo(void)
|
|||
#endif
|
||||
ogl_nv_texture_env_combine4_ok = (strstr(gl_extensions, "GL_NV_texture_env_combine4") != 0);
|
||||
|
||||
ogl_ext_texture_filter_anisotropic_ok = (strstr(gl_extensions, "GL_EXT_texture_filter_anisotropic") != 0);
|
||||
if (ogl_ext_texture_filter_anisotropic_ok)
|
||||
glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &anisotropic_max);
|
||||
|
||||
//add driver specific hacks here. whee.
|
||||
if ((stricmp(gl_renderer,"Mesa NVIDIA RIVA 1.0\n")==0 || stricmp(gl_renderer,"Mesa NVIDIA RIVA 1.2\n")==0) && stricmp(gl_version,"1.2 Mesa 3.0")==0){
|
||||
ogl_intensity4_ok=0;//ignores alpha, always black background instead of transparent.
|
||||
|
@ -242,7 +248,7 @@ void ogl_get_verinfo(void)
|
|||
}
|
||||
|
||||
con_printf(CON_VERBOSE, "gl_arb_multitexture:%i(%i units) gl_sgis_multitexture:%i(%i units) gl_nv_texture_env_combine4:%i\n", ogl_arb_multitexture_ok, arb_max_textures, ogl_sgis_multitexture_ok, sgi_max_textures, ogl_nv_texture_env_combine4_ok);
|
||||
con_printf(CON_VERBOSE, "gl_intensity4:%i gl_luminance4_alpha4:%i gl_rgba2:%i gl_readpixels:%i gl_gettexlevelparam:%i gl_setgammaramp_ok:%i\n",ogl_intensity4_ok,ogl_luminance4_alpha4_ok,ogl_rgba2_ok,ogl_readpixels_ok,ogl_gettexlevelparam_ok, ogl_setgammaramp_ok);
|
||||
con_printf(CON_VERBOSE, "gl_intensity4:%i gl_luminance4_alpha4:%i gl_rgba2:%i gl_readpixels:%i gl_gettexlevelparam:%i gl_setgammaramp_ok:%i gl_ext_texture_filter_anisotropic:%i(%f max)\n", ogl_intensity4_ok, ogl_luminance4_alpha4_ok, ogl_rgba2_ok, ogl_readpixels_ok, ogl_gettexlevelparam_ok, ogl_setgammaramp_ok, ogl_ext_texture_filter_anisotropic_ok, anisotropic_max);
|
||||
}
|
||||
|
||||
|
||||
|
@ -428,7 +434,14 @@ int gr_init()
|
|||
GL_texminfilt=ogl_atotexfilti(Args[t+1],1);
|
||||
}
|
||||
GL_needmipmaps=ogl_testneedmipmaps(GL_texminfilt);
|
||||
mprintf((0,"gr_init: texmagfilt:%x texminfilt:%x needmipmaps=%i\n",GL_texmagfilt,GL_texminfilt,GL_needmipmaps));
|
||||
|
||||
if ((t = FindArg("-gl_anisotropy")) || (t = FindArg("-gl_anisotropic")))
|
||||
{
|
||||
GL_texanisofilt=atof(Args[t + 1]);
|
||||
}
|
||||
|
||||
mprintf((0,"gr_init: texmagfilt:%x texminfilt:%x needmipmaps=%i anisotropic:%f\n",GL_texmagfilt,GL_texminfilt,GL_needmipmaps,GL_texanisofilt));
|
||||
|
||||
|
||||
if ((t=FindArg("-gl_vidmem"))){
|
||||
ogl_mem_target=atoi(Args[t+1])*1024*1024;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: ogl.c,v 1.19 2004-05-20 05:02:53 btb Exp $ */
|
||||
/* $Id: ogl.c,v 1.20 2004-05-20 05:16:00 btb Exp $ */
|
||||
/*
|
||||
*
|
||||
* Graphics support functions for OpenGL.
|
||||
|
@ -65,6 +65,7 @@ unsigned char *ogl_pal=gr_palette;
|
|||
|
||||
int GL_texmagfilt=GL_NEAREST;
|
||||
int GL_texminfilt=GL_NEAREST;
|
||||
float GL_texanisofilt = 0;
|
||||
int GL_needmipmaps=0;
|
||||
|
||||
int last_width=-1,last_height=-1;
|
||||
|
@ -87,6 +88,7 @@ int ogl_arb_multitexture_ok=0;
|
|||
int ogl_sgis_multitexture_ok=0;
|
||||
#endif
|
||||
int ogl_nv_texture_env_combine4_ok = 0;
|
||||
int ogl_ext_texture_filter_anisotropic_ok = 0;
|
||||
|
||||
int sphereh=0;
|
||||
int cross_lh[2]={0,0};
|
||||
|
@ -1517,7 +1519,11 @@ void ogl_loadtexture(unsigned char * data, int dxo,int dyo, ogl_texture *tex)
|
|||
if (tex->wantmip){
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_texmagfilt);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_texminfilt);
|
||||
}else{
|
||||
if (ogl_ext_texture_filter_anisotropic_ok && GL_texanisofilt)
|
||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, GL_texanisofilt);
|
||||
}
|
||||
else
|
||||
{
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||
}
|
||||
|
|
|
@ -98,8 +98,16 @@ extern int ogl_gettexlevelparam_ok;
|
|||
#endif
|
||||
extern int ogl_nv_texture_env_combine4_ok;
|
||||
|
||||
#ifndef GL_EXT_texture_filter_anisotropic
|
||||
#define GL_EXT_texture_filter_anisotropic 1
|
||||
#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
|
||||
#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
|
||||
#endif
|
||||
extern int ogl_ext_texture_filter_anisotropic_ok;
|
||||
|
||||
extern int gl_initialized;
|
||||
extern int GL_texmagfilt,GL_texminfilt,GL_needmipmaps;
|
||||
extern float GL_texanisofilt;
|
||||
extern int gl_reticle;
|
||||
|
||||
extern int active_texture_unit;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: inferno.c,v 1.75 2004-05-20 01:29:17 btb Exp $ */
|
||||
/* $Id: inferno.c,v 1.76 2004-05-20 05:16:21 btb Exp $ */
|
||||
/*
|
||||
THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
|
||||
SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
|
||||
|
@ -1031,6 +1031,7 @@ void print_commandline_help()
|
|||
printf(" -gl_mipmap %s\n", "set gl texture filters to \"standard\" (bilinear) mipmapping");
|
||||
printf(" -gl_trilinear %s\n", "set gl texture filters to trilinear mipmapping");
|
||||
printf( " -gl_simple %s\n","set gl texture filters to gl_nearest for \"original\" look. (default)");
|
||||
printf(" -gl_anisotropy <f> %s\n", "set maximum degree of anisotropy to <f>");
|
||||
printf( " -gl_alttexmerge %s\n","use new texmerge, usually uses less ram (default)");
|
||||
printf( " -gl_stdtexmerge %s\n","use old texmerge, uses more ram, but _might_ be a bit faster");
|
||||
#ifdef GR_SUPPORTS_FULLSCREEN_TOGGLE
|
||||
|
|
Loading…
Reference in a new issue