diff options
author | Antti Määttä <antti.maatta@qt.io> | 2016-11-09 08:56:01 +0200 |
---|---|---|
committer | Jani Heikkinen <jani.heikkinen@qt.io> | 2016-12-10 16:31:46 +0000 |
commit | c713ba7a34e170937b0cead152b0f68b9aa3e223 (patch) | |
tree | 50a2aaa980351d636ba44f8c7514d401c17838c5 | |
parent | 1c9d92ecbb5d132313905c68914384674099ec29 (diff) |
Fix indices passed to TriangleVisitor
TriangleVisitor traverse functions incorrectly pass indices offset by
vertex stride to visit function.
Task-number: QTBUG-56989
Change-Id: I7617953377d3cef72f887cfc732140f1b3db192f
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
-rw-r--r-- | src/render/backend/trianglesvisitor.cpp | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/src/render/backend/trianglesvisitor.cpp b/src/render/backend/trianglesvisitor.cpp index 9f5abaac3..372d7c6cb 100644 --- a/src/render/backend/trianglesvisitor.cpp +++ b/src/render/backend/trianglesvisitor.cpp @@ -108,8 +108,8 @@ void traverseTrianglesIndexed(index *indices, QVector3D abc[3]; while (i < indexInfo.count) { for (uint u = 0; u < 3; ++u) { - uint idx = indices[i + u] * verticesStride; - ndx[u] = idx; + ndx[u] = indices[i + u]; + uint idx = ndx[u] * verticesStride; for (uint j = 0; j < maxVerticesDataSize; ++j) { abc[u][j] = vertices[idx + j]; } @@ -134,8 +134,8 @@ void traverseTriangles(vertex *vertices, QVector3D abc[3]; while (i < vertexInfo.count) { for (uint u = 0; u < 3; ++u) { - uint idx = (i + u) * verticesStride; - ndx[u] = idx; + ndx[u] = (i + u); + uint idx = ndx[u] * verticesStride; for (uint j = 0; j < maxVerticesDataSize; ++j) { abc[u][j] = vertices[idx + j]; } @@ -171,12 +171,12 @@ void traverseTriangleStripIndexed(index *indices, while (i < indexInfo.count - 2) { bool degenerate = false; for (uint u = 0; u < 3; ++u) { - uint idx = indices[i + u] * verticesStride; - if (checkDegenerate(ndx, idx, u)) { + ndx[u] = indices[i + u]; + if (checkDegenerate(ndx, ndx[u], u)) { degenerate = true; break; } - ndx[u] = idx; + uint idx = ndx[u] * verticesStride; for (uint j = 0; j < maxVerticesDataSize; ++j) abc[u][j] = vertices[idx + j]; } @@ -201,8 +201,8 @@ void traverseTriangleStrip(vertex *vertices, QVector3D abc[3]; while (i < vertexInfo.count) { for (uint u = 0; u < 3; ++u) { - uint idx = (i + u) * verticesStride; - ndx[u] = idx; + ndx[u] = (i + u); + uint idx = ndx[u] * verticesStride; for (uint j = 0; j < maxVerticesDataSize; ++j) { abc[u][j] = vertices[idx + j]; } @@ -233,8 +233,8 @@ void traverseTriangleFanIndexed(index *indices, uint i = 1; while (i < indexInfo.count) { for (uint u = 0; u < 2; ++u) { - uint idx = indices[i + u] * verticesStride; - ndx[i] = idx; + ndx[i] = indices[i + u]; + uint idx = ndx[i] * verticesStride; for (uint j = 0; j < maxVerticesDataSize; ++j) { abc[u + 1][j] = vertices[idx + j]; } @@ -263,8 +263,8 @@ void traverseTriangleFan(vertex *vertices, uint i = 1; while (i < vertexInfo.count) { for (uint u = 0; u < 2; ++u) { - uint idx = (i + u) * verticesStride; - ndx[u] = idx; + ndx[u] = (i + u); + uint idx = ndx[u] * verticesStride; for (uint j = 0; j < maxVerticesDataSize; ++j) { abc[u + 1][j] = vertices[idx + j]; } @@ -290,8 +290,8 @@ void traverseTriangleAdjacencyIndexed(index *indices, QVector3D abc[3]; while (i < indexInfo.count) { for (uint u = 0; u < 6; u += 2) { - uint idx = indices[i + u] * verticesStride; - ndx[u / 2] = idx; + ndx[u / 2] = indices[i + u]; + uint idx = ndx[u / 2] * verticesStride; for (uint j = 0; j < maxVerticesDataSize; ++j) { abc[u / 2][j] = vertices[idx + j]; } @@ -316,8 +316,8 @@ void traverseTriangleAdjacency(Vertex *vertices, QVector3D abc[3]; while (i < vertexInfo.count) { for (uint u = 0; u < 6; u += 2) { - uint idx = (i + u) * verticesStride; - ndx[u / 2] = idx; + ndx[u / 2] = (i + u); + uint idx = ndx[u / 2] * verticesStride; for (uint j = 0; j < maxVerticesDataSize; ++j) { abc[u / 2][j] = vertices[idx + j]; } |