summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntti Määttä <antti.maatta@qt.io>2016-11-09 08:56:01 +0200
committerJani Heikkinen <jani.heikkinen@qt.io>2016-12-10 16:31:46 +0000
commitc713ba7a34e170937b0cead152b0f68b9aa3e223 (patch)
tree50a2aaa980351d636ba44f8c7514d401c17838c5
parent1c9d92ecbb5d132313905c68914384674099ec29 (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.cpp34
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];
}