diff --git a/source/gui/MiniMap.cpp b/source/gui/MiniMap.cpp index 7e451192ac..ad1b7f9bf3 100644 --- a/source/gui/MiniMap.cpp +++ b/source/gui/MiniMap.cpp @@ -338,11 +338,6 @@ void CMiniMap::Draw() tech->BeginPass(); shader = tech->GetShader(); } - else - { - shader = g_Renderer.GetShaderManager().LoadProgram("fixed:dummy", CShaderDefines()); - shader->Bind(); - } const float x = m_CachedActualSize.left, y = m_CachedActualSize.bottom; const float x2 = m_CachedActualSize.right, y2 = m_CachedActualSize.top; @@ -351,9 +346,10 @@ void CMiniMap::Draw() const float angle = GetAngle(); // Draw the main textured quad - //g_Renderer.BindTexture(0, m_TerrainTexture); - - shader->BindTexture("baseTex", m_TerrainTexture); + if (g_Renderer.GetRenderPath() == CRenderer::RP_SHADER) + shader->BindTexture("baseTex", m_TerrainTexture); + else + g_Renderer.BindTexture(0, m_TerrainTexture); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); @@ -364,9 +360,11 @@ void CMiniMap::Draw() // Draw territory boundaries CTerritoryTexture& territoryTexture = g_Game->GetView()->GetTerritoryTexture(); - shader->BindTexture("baseTex", territoryTexture.GetTexture()); + if (g_Renderer.GetRenderPath() == CRenderer::RP_SHADER) + shader->BindTexture("baseTex", territoryTexture.GetTexture()); + else + territoryTexture.BindTexture(0); - //territoryTexture.BindTexture(0); glEnable(GL_BLEND); glMatrixMode(GL_TEXTURE); glLoadMatrixf(territoryTexture.GetMinimapTextureMatrix()); @@ -392,11 +390,13 @@ void CMiniMap::Draw() tech = g_Renderer.GetShaderManager().LoadEffect(CStrIntern("minimap"), g_Renderer.GetSystemShaderDefines(), defines); tech->BeginPass(); shader = tech->GetShader(); + shader->BindTexture("baseTex", losTexture.GetTexture()); + } + else + { + losTexture.BindTexture(0); } - shader->BindTexture("baseTex", losTexture.GetTexture()); - - //losTexture.BindTexture(0); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE); glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE); glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PRIMARY_COLOR_ARB); @@ -478,8 +478,17 @@ void CMiniMap::Draw() { glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_COLOR_ARRAY); - shader->VertexPointer(2, GL_FLOAT, sizeof(MinimapUnitVertex), &vertexArray[0].x); - shader->ColorPointer(4, GL_UNSIGNED_BYTE, sizeof(MinimapUnitVertex), &vertexArray[0].r); + + if (g_Renderer.GetRenderPath() == CRenderer::RP_SHADER) + { + shader->VertexPointer(2, GL_FLOAT, sizeof(MinimapUnitVertex), &vertexArray[0].x); + shader->ColorPointer(4, GL_UNSIGNED_BYTE, sizeof(MinimapUnitVertex), &vertexArray[0].r); + } + else + { + glVertexPointer(2, GL_FLOAT, sizeof(MinimapUnitVertex), &vertexArray[0].x); + glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(MinimapUnitVertex), &vertexArray[0].r); + } glDrawArrays(GL_POINTS, 0, (GLsizei)vertexArray.size()); @@ -513,10 +522,6 @@ void CMiniMap::Draw() { tech->EndPass(); } - else - { - shader->Unbind(); - } // Reset everything back to normal glPointSize(1.0f); diff --git a/source/renderer/OverlayRenderer.cpp b/source/renderer/OverlayRenderer.cpp index 4a80e95153..a26fe8165c 100644 --- a/source/renderer/OverlayRenderer.cpp +++ b/source/renderer/OverlayRenderer.cpp @@ -583,19 +583,22 @@ void OverlayRenderer::RenderForegroundOverlays(const CCamera& viewCamera) tech->BeginPass(); shader = tech->GetShader(); } - else - { - shader = g_Renderer.GetShaderManager().LoadProgram("fixed:dummy", CShaderDefines()); - shader->Bind(); - } float uvs[8] = { 0,0, 1,0, 1,1, 0,1 }; - shader->TexCoordPointer(GL_TEXTURE0, 2, GL_FLOAT, sizeof(float)*2, &uvs[0]); + + if (g_Renderer.GetRenderPath() == CRenderer::RP_SHADER) + shader->TexCoordPointer(GL_TEXTURE0, 2, GL_FLOAT, sizeof(float)*2, &uvs[0]); + else + glTexCoordPointer(2, GL_FLOAT, sizeof(float)*2, &uvs); for (size_t i = 0; i < m->sprites.size(); ++i) { SOverlaySprite* sprite = m->sprites[i]; - shader->BindTexture("baseTex", sprite->m_Texture); + + if (g_Renderer.GetRenderPath() == CRenderer::RP_SHADER) + shader->BindTexture("baseTex", sprite->m_Texture); + else + sprite->m_Texture->Bind(); CVector3D pos[4] = { sprite->m_Position + right*sprite->m_X0 + up*sprite->m_Y0, @@ -604,7 +607,11 @@ void OverlayRenderer::RenderForegroundOverlays(const CCamera& viewCamera) sprite->m_Position + right*sprite->m_X0 + up*sprite->m_Y1 }; - shader->VertexPointer(3, GL_FLOAT, sizeof(float)*3, &pos[0].X); + if (g_Renderer.GetRenderPath() == CRenderer::RP_SHADER) + shader->VertexPointer(3, GL_FLOAT, sizeof(float)*3, &pos[0].X); + else + glVertexPointer(3, GL_FLOAT, sizeof(float)*3, &pos[0].X); + glDrawArrays(GL_QUADS, 0, (GLsizei)4); g_Renderer.GetStats().m_DrawCalls++; @@ -612,13 +619,7 @@ void OverlayRenderer::RenderForegroundOverlays(const CCamera& viewCamera) } if (g_Renderer.GetRenderPath() == CRenderer::RP_SHADER) - { tech->EndPass(); - } - else - { - shader->Unbind(); - } glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_TEXTURE_COORD_ARRAY); diff --git a/source/renderer/SkyManager.cpp b/source/renderer/SkyManager.cpp index e9a3154249..b69eea9b7b 100644 --- a/source/renderer/SkyManager.cpp +++ b/source/renderer/SkyManager.cpp @@ -140,6 +140,9 @@ void SkyManager::RenderSky() return; glDepthMask( GL_FALSE ); + + pglActiveTextureARB(GL_TEXTURE0_ARB); + glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); glMatrixMode(GL_MODELVIEW); glPushMatrix(); @@ -166,14 +169,13 @@ void SkyManager::RenderSky() skytech->BeginPass(); shader = skytech->GetShader(); } - else - { - shader = g_Renderer.GetShaderManager().LoadProgram("fixed:dummy", CShaderDefines()); - shader->Bind(); - } // Front face (positive Z) - shader->BindTexture("baseTex", m_SkyTexture[FRONT]); + if (g_Renderer.GetRenderPath() == CRenderer::RP_SHADER) + shader->BindTexture("baseTex", m_SkyTexture[FRONT]); + else + m_SkyTexture[FRONT]->Bind(); + glBegin( GL_QUADS ); glTexCoord2f( 0, 1 ); glVertex3f( -D, -D, +D ); @@ -186,7 +188,11 @@ void SkyManager::RenderSky() glEnd(); // Back face (negative Z) - shader->BindTexture("baseTex", m_SkyTexture[BACK]); + if (g_Renderer.GetRenderPath() == CRenderer::RP_SHADER) + shader->BindTexture("baseTex", m_SkyTexture[BACK]); + else + m_SkyTexture[BACK]->Bind(); + glBegin( GL_QUADS ); glTexCoord2f( 1, 1 ); glVertex3f( -D, -D, -D ); @@ -199,7 +205,11 @@ void SkyManager::RenderSky() glEnd(); // Right face (negative X) - shader->BindTexture("baseTex", m_SkyTexture[RIGHT]); + if (g_Renderer.GetRenderPath() == CRenderer::RP_SHADER) + shader->BindTexture("baseTex", m_SkyTexture[RIGHT]); + else + m_SkyTexture[RIGHT]->Bind(); + glBegin( GL_QUADS ); glTexCoord2f( 0, 1 ); glVertex3f( -D, -D, -D ); @@ -212,7 +222,11 @@ void SkyManager::RenderSky() glEnd(); // Left face (positive X) - shader->BindTexture("baseTex", m_SkyTexture[LEFT]); + if (g_Renderer.GetRenderPath() == CRenderer::RP_SHADER) + shader->BindTexture("baseTex", m_SkyTexture[LEFT]); + else + m_SkyTexture[LEFT]->Bind(); + glBegin( GL_QUADS ); glTexCoord2f( 1, 1 ); glVertex3f( +D, -D, -D ); @@ -225,7 +239,11 @@ void SkyManager::RenderSky() glEnd(); // Top face (positive Y) - shader->BindTexture("baseTex", m_SkyTexture[TOP]); + if (g_Renderer.GetRenderPath() == CRenderer::RP_SHADER) + shader->BindTexture("baseTex", m_SkyTexture[TOP]); + else + m_SkyTexture[TOP]->Bind(); + glBegin( GL_QUADS ); glTexCoord2f( 1, 0 ); glVertex3f( +D, +D, -D ); @@ -238,13 +256,7 @@ void SkyManager::RenderSky() glEnd(); if (g_Renderer.GetRenderPath() == CRenderer::RP_SHADER) - { skytech->EndPass(); - } - else - { - shader->Unbind(); - } glPopMatrix();