1
0
forked from 0ad/0ad

Fix large slowdown in rendering on some configurations.

Usage of GL_VERTEX_ARRAY client state apparently prevented OpenGL from
using hardware acceleration on my computer (Macos 10.14 with an Intel
GPU).
It is unclear how many people would be affected by this issue, but on my
end it makes GLSL performance competitive with ARB again.

Reviewed By: vladislavbelov
Differential Revision: https://code.wildfiregames.com/D3900
This was SVN commit r25343.
This commit is contained in:
wraitii 2021-04-29 07:38:40 +00:00
parent 2ce4c2e7d5
commit 835c081ca4
2 changed files with 0 additions and 16 deletions

View File

@ -604,9 +604,6 @@ void OverlayRenderer::RenderForegroundOverlays(const CCamera& viewCamera)
CVector3D right = -viewCamera.GetOrientation().GetLeft();
CVector3D up = viewCamera.GetOrientation().GetUp();
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
CShaderTechniquePtr tech = g_Renderer.GetShaderManager().LoadEffect(str_foreground_overlay);
tech->BeginPass();
CShaderProgramPtr shader = tech->GetShader();
@ -642,9 +639,6 @@ void OverlayRenderer::RenderForegroundOverlays(const CCamera& viewCamera)
tech->EndPass();
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glEnable(GL_DEPTH_TEST);
glDisable(GL_BLEND);
glDisable(GL_TEXTURE_2D);
@ -729,8 +723,6 @@ void OverlayRenderer::RenderSphereOverlays()
glEnable(GL_BLEND);
glDepthMask(0);
glEnableClientState(GL_VERTEX_ARRAY);
CShaderProgramPtr shader;
CShaderTechniquePtr tech;
@ -764,8 +756,6 @@ void OverlayRenderer::RenderSphereOverlays()
tech->EndPass();
glDisableClientState(GL_VERTEX_ARRAY);
glDepthMask(1);
glDisable(GL_BLEND);
#endif

View File

@ -334,9 +334,7 @@ void TerrainRenderer::RenderPatches(int cullGroup, const CColor& color)
dummyShader->Uniform(str_transform, g_Renderer.GetViewCamera().GetViewProjection());
dummyShader->Uniform(str_color, color);
glEnableClientState(GL_VERTEX_ARRAY);
CPatchRData::RenderStreams(visiblePatches, dummyShader, STREAM_POS);
glDisableClientState(GL_VERTEX_ARRAY);
dummyShader->Unbind();
#endif
@ -621,8 +619,6 @@ void TerrainRenderer::RenderSimpleWater(int cullGroup)
waterSimpleShader->Uniform(str_time, static_cast<float>(time));
waterSimpleShader->Uniform(str_color, WaterMgr->m_WaterColor);
glEnableClientState(GL_VERTEX_ARRAY);
std::vector<CPatchRData*>& visiblePatches = m->visiblePatches[cullGroup];
for (size_t i = 0; i < visiblePatches.size(); ++i)
{
@ -630,8 +626,6 @@ void TerrainRenderer::RenderSimpleWater(int cullGroup)
data->RenderWater(waterSimpleShader, false, true);
}
glDisableClientState(GL_VERTEX_ARRAY);
waterSimpleShader->Unbind();
g_Renderer.BindTexture(1, 0);