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:
parent
2ce4c2e7d5
commit
835c081ca4
@ -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
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user