From e83092a7ebf7e6fa49714731af5e059d20596306 Mon Sep 17 00:00:00 2001 From: Christopher Bruns Date: Sun, 24 Feb 2019 13:23:08 -0800 Subject: [PATCH] Fix stereo-3D 2D quad color problem. --- src/rendering/hwrenderer/utility/hw_draw2d.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/rendering/hwrenderer/utility/hw_draw2d.cpp b/src/rendering/hwrenderer/utility/hw_draw2d.cpp index 9356c5515..f7e6e6d18 100644 --- a/src/rendering/hwrenderer/utility/hw_draw2d.cpp +++ b/src/rendering/hwrenderer/utility/hw_draw2d.cpp @@ -102,9 +102,9 @@ void Draw2D(F2DDrawer *drawer, FRenderState &state) state.EnableMultisampling(false); state.EnableLineSmooth(gl_aalines); - auto &vertices = drawer->mVertices; - auto &indices = drawer->mIndices; - auto &commands = drawer->mData; + auto const &verticesBgra = drawer->mVertices; + auto const &indices = drawer->mIndices; + auto const &commands = drawer->mData; if (commands.Size() == 0) { @@ -112,13 +112,15 @@ void Draw2D(F2DDrawer *drawer, FRenderState &state) return; } - for (auto &v : vertices) + // copy vertices before modifying them, to avoid stereo 3d eye mismatch + auto verticesRgba = verticesBgra; + for (auto &v : verticesRgba) { // Change from BGRA to RGBA std::swap(v.color0.r, v.color0.b); } F2DVertexBuffer vb; - vb.UploadData(&vertices[0], vertices.Size(), &indices[0], indices.Size()); + vb.UploadData(&verticesRgba[0], verticesRgba.Size(), &indices[0], indices.Size()); state.SetVertexBuffer(&vb); state.EnableFog(false);