Adds a wireframe mode to the water rendering.

Reviewed By: wraitii
Differential Revision: https://code.wildfiregames.com/D769
This was SVN commit r20378.
This commit is contained in:
Vladislav Belov 2017-10-30 00:02:29 +00:00
parent 38d09ce35c
commit 7e239f38a3
4 changed files with 23 additions and 2 deletions

View File

@ -1076,16 +1076,19 @@ InReaction CGameView::HandleEvent(const SDL_Event_* ev)
else if (g_Renderer.GetModelRenderMode() == SOLID)
{
g_Renderer.SetTerrainRenderMode(EDGED_FACES);
g_Renderer.SetWaterRenderMode(EDGED_FACES);
g_Renderer.SetModelRenderMode(EDGED_FACES);
}
else if (g_Renderer.GetModelRenderMode() == EDGED_FACES)
{
g_Renderer.SetTerrainRenderMode(WIREFRAME);
g_Renderer.SetWaterRenderMode(WIREFRAME);
g_Renderer.SetModelRenderMode(WIREFRAME);
}
else
{
g_Renderer.SetTerrainRenderMode(SOLID);
g_Renderer.SetWaterRenderMode(SOLID);
g_Renderer.SetModelRenderMode(SOLID);
}
return IN_HANDLED;

View File

@ -1466,6 +1466,11 @@ void CPatchRData::RenderWater(CShaderProgramPtr& shader, bool onlyShore, bool fi
if (g_Renderer.m_SkipSubmit || (!m_VBWater && !m_VBWaterShore))
return;
#if !CONFIG2_GLES
if (g_Renderer.m_WaterRenderMode == WIREFRAME)
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
#endif
if (m_VBWater != 0x0 && !onlyShore)
{
SWaterVertex *base=(SWaterVertex *)m_VBWater->m_Owner->Bind();
@ -1508,4 +1513,9 @@ void CPatchRData::RenderWater(CShaderProgramPtr& shader, bool onlyShore, bool fi
}
CVertexBuffer::Unbind();
#if !CONFIG2_GLES
if (g_Renderer.m_WaterRenderMode == WIREFRAME)
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
#endif
}

View File

@ -257,12 +257,17 @@ public:
}
// set the mode to render subsequent terrain patches
void SetTerrainRenderMode(ERenderMode mode) { m_TerrainRenderMode=mode; }
void SetTerrainRenderMode(ERenderMode mode) { m_TerrainRenderMode = mode; }
// get the mode to render subsequent terrain patches
ERenderMode GetTerrainRenderMode() const { return m_TerrainRenderMode; }
// set the mode to render subsequent water patches
void SetWaterRenderMode(ERenderMode mode) { m_WaterRenderMode = mode; }
// get the mode to render subsequent water patches
ERenderMode GetWaterRenderMode() const { return m_WaterRenderMode; }
// set the mode to render subsequent models
void SetModelRenderMode(ERenderMode mode) { m_ModelRenderMode=mode; }
void SetModelRenderMode(ERenderMode mode) { m_ModelRenderMode = mode; }
// get the mode to render subsequent models
ERenderMode GetModelRenderMode() const { return m_ModelRenderMode; }
@ -412,6 +417,8 @@ protected:
int m_Height;
// current terrain rendering mode
ERenderMode m_TerrainRenderMode;
// current water rendering mode
ERenderMode m_WaterRenderMode;
// current model rendering mode
ERenderMode m_ModelRenderMode;

View File

@ -198,6 +198,7 @@ MESSAGEHANDLER(ResizeScreen)
MESSAGEHANDLER(RenderStyle)
{
g_Renderer.SetTerrainRenderMode(msg->wireframe ? EDGED_FACES : SOLID);
g_Renderer.SetWaterRenderMode(msg->wireframe ? EDGED_FACES : SOLID);
g_Renderer.SetModelRenderMode(msg->wireframe ? EDGED_FACES : SOLID);
}