mirror of
https://github.com/YGGverse/xash3d-fwgs.git
synced 2025-01-12 16:18:01 +00:00
ref: gl: small refactoring on filter choosing for newly uploaded texture
This commit is contained in:
parent
e274c62cfc
commit
072b0cef27
@ -148,6 +148,7 @@ GL_ApplyTextureParams
|
|||||||
void GL_ApplyTextureParams( gl_texture_t *tex )
|
void GL_ApplyTextureParams( gl_texture_t *tex )
|
||||||
{
|
{
|
||||||
vec4_t border = { 0.0f, 0.0f, 0.0f, 1.0f };
|
vec4_t border = { 0.0f, 0.0f, 0.0f, 1.0f };
|
||||||
|
qboolean nomipmap;
|
||||||
|
|
||||||
if( !glw_state.initialized )
|
if( !glw_state.initialized )
|
||||||
return;
|
return;
|
||||||
@ -159,6 +160,18 @@ void GL_ApplyTextureParams( gl_texture_t *tex )
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
// set texture filter
|
// set texture filter
|
||||||
|
nomipmap = tex->numMips <= 1 || FBitSet( tex->flags, TF_NOMIPMAP|TF_DEPTHMAP );
|
||||||
|
if( !GL_TextureFilteringEnabled( tex ))
|
||||||
|
{
|
||||||
|
pglTexParameteri( tex->target, GL_TEXTURE_MIN_FILTER, nomipmap ? GL_NEAREST : GL_NEAREST_MIPMAP_NEAREST );
|
||||||
|
pglTexParameteri( tex->target, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pglTexParameteri( tex->target, GL_TEXTURE_MIN_FILTER, nomipmap ? GL_LINEAR : GL_LINEAR_MIPMAP_LINEAR );
|
||||||
|
pglTexParameteri( tex->target, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
|
||||||
|
}
|
||||||
|
|
||||||
if( FBitSet( tex->flags, TF_DEPTHMAP ))
|
if( FBitSet( tex->flags, TF_DEPTHMAP ))
|
||||||
{
|
{
|
||||||
if( !FBitSet( tex->flags, TF_NOCOMPARE ))
|
if( !FBitSet( tex->flags, TF_NOCOMPARE ))
|
||||||
@ -171,47 +184,12 @@ void GL_ApplyTextureParams( gl_texture_t *tex )
|
|||||||
pglTexParameteri( tex->target, GL_DEPTH_TEXTURE_MODE_ARB, GL_LUMINANCE );
|
pglTexParameteri( tex->target, GL_DEPTH_TEXTURE_MODE_ARB, GL_LUMINANCE );
|
||||||
else pglTexParameteri( tex->target, GL_DEPTH_TEXTURE_MODE_ARB, GL_INTENSITY );
|
else pglTexParameteri( tex->target, GL_DEPTH_TEXTURE_MODE_ARB, GL_INTENSITY );
|
||||||
|
|
||||||
if( !GL_TextureFilteringEnabled( tex ))
|
|
||||||
{
|
|
||||||
pglTexParameteri( tex->target, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
|
|
||||||
pglTexParameteri( tex->target, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pglTexParameteri( tex->target, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
|
|
||||||
pglTexParameteri( tex->target, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
|
|
||||||
}
|
|
||||||
|
|
||||||
// allow max anisotropy as 1.0f on depth textures
|
// allow max anisotropy as 1.0f on depth textures
|
||||||
if( GL_Support( GL_ANISOTROPY_EXT ))
|
if( GL_Support( GL_ANISOTROPY_EXT ))
|
||||||
pglTexParameterf( tex->target, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0f );
|
pglTexParameterf( tex->target, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0f );
|
||||||
}
|
}
|
||||||
else if( FBitSet( tex->flags, TF_NOMIPMAP ) || tex->numMips <= 1 )
|
else if( !FBitSet( tex->flags, TF_NOMIPMAP ) && tex->numMips > 1 )
|
||||||
{
|
{
|
||||||
if( !GL_TextureFilteringEnabled( tex ))
|
|
||||||
{
|
|
||||||
pglTexParameteri( tex->target, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
|
|
||||||
pglTexParameteri( tex->target, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pglTexParameteri( tex->target, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
|
|
||||||
pglTexParameteri( tex->target, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if( !GL_TextureFilteringEnabled( tex ))
|
|
||||||
{
|
|
||||||
pglTexParameteri( tex->target, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST );
|
|
||||||
pglTexParameteri( tex->target, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pglTexParameteri( tex->target, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR );
|
|
||||||
pglTexParameteri( tex->target, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
|
|
||||||
}
|
|
||||||
|
|
||||||
// set texture anisotropy if available
|
// set texture anisotropy if available
|
||||||
if( GL_Support( GL_ANISOTROPY_EXT ) && ( tex->numMips > 1 ) && !FBitSet( tex->flags, TF_ALPHACONTRAST ))
|
if( GL_Support( GL_ANISOTROPY_EXT ) && ( tex->numMips > 1 ) && !FBitSet( tex->flags, TF_ALPHACONTRAST ))
|
||||||
pglTexParameterf( tex->target, GL_TEXTURE_MAX_ANISOTROPY_EXT, gl_texture_anisotropy.value );
|
pglTexParameterf( tex->target, GL_TEXTURE_MAX_ANISOTROPY_EXT, gl_texture_anisotropy.value );
|
||||||
@ -288,6 +266,7 @@ GL_UpdateTextureParams
|
|||||||
static void GL_UpdateTextureParams( int iTexture )
|
static void GL_UpdateTextureParams( int iTexture )
|
||||||
{
|
{
|
||||||
gl_texture_t *tex = &gl_textures[iTexture];
|
gl_texture_t *tex = &gl_textures[iTexture];
|
||||||
|
qboolean nomipmap;
|
||||||
|
|
||||||
Assert( tex != NULL );
|
Assert( tex != NULL );
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user