From 0f7847aede4b28ace1520f2f66f508586077fc4f Mon Sep 17 00:00:00 2001 From: codereader Date: Fri, 7 Jan 2022 07:13:01 +0100 Subject: [PATCH] #5584: Fix WindingRenderer client state --- libs/render/WindingRenderer.h | 12 ++++++++++-- radiantcore/rendersystem/backend/OpenGLShader.cpp | 1 - 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/libs/render/WindingRenderer.h b/libs/render/WindingRenderer.h index 3bb5791f6f..2ca5ef9efe 100644 --- a/libs/render/WindingRenderer.h +++ b/libs/render/WindingRenderer.h @@ -187,6 +187,13 @@ class WindingRenderer : void renderAllWindings() override { + glEnableClientState(GL_VERTEX_ARRAY); + glEnableClientState(GL_TEXTURE_COORD_ARRAY); + glEnableClientState(GL_NORMAL_ARRAY); + glDisableClientState(GL_COLOR_ARRAY); + + glFrontFace(GL_CCW); + for (auto bucketIndex = 0; bucketIndex < _buckets.size(); ++bucketIndex) { auto& bucket = _buckets[bucketIndex]; @@ -197,8 +204,6 @@ class WindingRenderer : const auto& vertices = bucket.buffer.getVertices(); const auto& indices = bucket.buffer.getIndices(); - glDisableClientState(GL_COLOR_ARRAY); - glVertexPointer(3, GL_DOUBLE, sizeof(ArbitraryMeshVertex), &vertices.front().vertex); glTexCoordPointer(2, GL_DOUBLE, sizeof(ArbitraryMeshVertex), &vertices.front().texcoord); glNormalPointer(GL_DOUBLE, sizeof(ArbitraryMeshVertex), &vertices.front().normal); @@ -208,6 +213,9 @@ class WindingRenderer : debug::checkGLErrors(); } + + glDisableClientState(GL_TEXTURE_COORD_ARRAY); + glDisableClientState(GL_NORMAL_ARRAY); } void renderWinding(IWindingRenderer::RenderMode mode, IWindingRenderer::Slot slot) override diff --git a/radiantcore/rendersystem/backend/OpenGLShader.cpp b/radiantcore/rendersystem/backend/OpenGLShader.cpp index a7228a9f01..b8adf3d3a2 100644 --- a/radiantcore/rendersystem/backend/OpenGLShader.cpp +++ b/radiantcore/rendersystem/backend/OpenGLShader.cpp @@ -171,7 +171,6 @@ void OpenGLShader::drawSurfaces() } // Render all windings - glFrontFace(GL_CCW); _windingRenderer->renderAllWindings(); #ifdef RENDERABLE_GEOMETRY