1
0
forked from 0ad/0ad

Updated to properly support LOD bias settings in config. Fixes mipmap blurryness.

This was SVN commit r1254.
This commit is contained in:
Calefaction 2004-10-17 21:01:00 +00:00
parent e31edf4fb4
commit 50dee130ae
5 changed files with 34 additions and 4 deletions

View File

@ -49,6 +49,9 @@ void CMiniMap::Draw()
g_Renderer.BindTexture(0, m_Handle);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
float texCoordMax = ((float)m_MapSize - 1) / ((float)m_TextureSize);
glBegin(GL_QUADS);

View File

@ -103,6 +103,7 @@ static bool g_NoPBuffer=true;
// flag to switch on fixed frame timing (RC: I'm using this for profiling purposes)
static bool g_FixedFrameTiming=false;
static bool g_VSync = false;
static float g_LodBias = 0.0f;
CLightEnv g_LightEnv;
@ -625,6 +626,9 @@ static void ParseArgs(int argc, char* argv[])
val->GetBool(g_NoGLVBO);
if ((val=g_ConfigDB.GetValue(CFG_SYSTEM, "shadows")))
val->GetBool(g_Shadows);
if((val = g_ConfigDB.GetValue(CFG_SYSTEM, "lodbias")))
val->GetFloat(g_LodBias);
LOG(NORMAL, LOG_CATEGORY, "g_x/yres is %dx%d", g_xres, g_yres);
}
@ -912,9 +916,6 @@ sle(11340106);
if(oglExtAvail("WGL_EXT_swap_control"))
wglSwapIntervalEXT(g_VSync? 1 : 0);
#ifdef _MSC_VER
u64 CURTSC=rdtsc();
debug_out(
@ -934,6 +935,7 @@ PREVTSC=CURTSC;
g_Renderer.SetOptionBool(CRenderer::OPT_NOVBO,g_NoGLVBO);
g_Renderer.SetOptionBool(CRenderer::OPT_SHADOWS,g_Shadows);
g_Renderer.SetOptionBool(CRenderer::OPT_NOPBUFFER,g_NoPBuffer);
g_Renderer.SetOptionFloat(CRenderer::OPT_LODBIAS, g_LodBias);
// create terrain related stuff
new CTextureManager;

View File

@ -234,6 +234,16 @@ void CRenderer::SetOptionColor(enum Option opt,const RGBAColor& value)
}
}
void CRenderer::SetOptionFloat(enum Option opt, float val)
{
switch(opt)
{
case OPT_LODBIAS:
m_Options.m_LodBias = val;
break;
}
}
//////////////////////////////////////////////////////////////////////////////////////////
// GetOptionColor: get color renderer option
const RGBAColor& CRenderer::GetOptionColor(enum Option opt) const
@ -652,6 +662,9 @@ void CRenderer::RenderShadowMap()
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA_ARB, GL_REPLACE);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PRIMARY_COLOR_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA);
// Set the proper LOD bias
glTexEnvf(GL_TEXTURE_FILTER_CONTROL, GL_TEXTURE_LOD_BIAS, m_Options.m_LodBias);
glColor4fv(m_Options.m_ShadowColor);
@ -793,6 +806,9 @@ void CRenderer::RenderModelSubmissions()
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_CONSTANT);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA);
// Set the proper LOD bias
glTexEnvf(GL_TEXTURE_FILTER_CONTROL, GL_TEXTURE_LOD_BIAS, m_Options.m_LodBias);
// setup client states
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);

View File

@ -82,7 +82,8 @@ public:
OPT_NOVBO,
OPT_NOPBUFFER,
OPT_SHADOWS,
OPT_SHADOWCOLOR
OPT_SHADOWCOLOR,
OPT_LODBIAS
};
// stats class - per frame counts of number of draw calls, poly counts etc
@ -128,6 +129,7 @@ public:
bool GetOptionBool(enum Option opt) const;
// set/get RGBA color renderer option
void SetOptionColor(enum Option opt,const RGBAColor& value);
void SetOptionFloat(enum Option opt, float val);
const RGBAColor& GetOptionColor(enum Option opt) const;
// return view width
@ -294,6 +296,7 @@ protected:
bool m_NoVBO;
bool m_Shadows;
RGBAColor m_ShadowColor;
float m_LodBias;
} m_Options;
// build card cap bits
void EnumCaps();

View File

@ -82,6 +82,9 @@ void CTransparencyRenderer::Render()
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_PRIMARY_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR);
// Set the proper LOD bias
glTexEnvf(GL_TEXTURE_FILTER_CONTROL, GL_TEXTURE_LOD_BIAS, g_Renderer.m_Options.m_LodBias);
RenderObjectsStreams(STREAM_POS|STREAM_COLOR|STREAM_UV0);
glDisable(GL_BLEND);
@ -173,6 +176,9 @@ void CTransparencyRenderer::RenderShadows()
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA);
// Set the proper LOD bias
glTexEnvf(GL_TEXTURE_FILTER_CONTROL, GL_TEXTURE_LOD_BIAS, g_Renderer.m_Options.m_LodBias);
RenderObjectsStreams(STREAM_POS|STREAM_UV0,MODELFLAG_CASTSHADOWS);
glDepthMask(1);