diff --git a/source/graphics/GameView.cpp b/source/graphics/GameView.cpp index 18fa2bbe6f..44ab8b441b 100644 --- a/source/graphics/GameView.cpp +++ b/source/graphics/GameView.cpp @@ -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; diff --git a/source/renderer/PatchRData.cpp b/source/renderer/PatchRData.cpp index 0b8133d41a..3067071203 100644 --- a/source/renderer/PatchRData.cpp +++ b/source/renderer/PatchRData.cpp @@ -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 } diff --git a/source/renderer/Renderer.h b/source/renderer/Renderer.h index 35472a77a7..a72a41a721 100644 --- a/source/renderer/Renderer.h +++ b/source/renderer/Renderer.h @@ -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; diff --git a/source/tools/atlas/GameInterface/Handlers/GraphicsSetupHandlers.cpp b/source/tools/atlas/GameInterface/Handlers/GraphicsSetupHandlers.cpp index 1bbe2434d7..c3fcd9dd01 100644 --- a/source/tools/atlas/GameInterface/Handlers/GraphicsSetupHandlers.cpp +++ b/source/tools/atlas/GameInterface/Handlers/GraphicsSetupHandlers.cpp @@ -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); }