diff options
author | Mike Krus <mike.krus@kdab.com> | 2019-12-07 13:03:58 +0000 |
---|---|---|
committer | Mike Krus <mike.krus@kdab.com> | 2019-12-09 07:23:02 +0000 |
commit | 69789d0184ffa54c1760ad5204bb4539c9399753 (patch) | |
tree | 80ebe48f4545e604ec385cfd39c981ba5d1abb4e /src/render/backend/segmentsvisitor.cpp | |
parent | 3019497559328d2fd0c0c9548f512fba9fe1f94e (diff) |
Fix picking with primitive restart
Task-number: QTBUG-71919
Change-Id: If7923fab6c43f5d7139d1bbdceb73c17bf489099
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/backend/segmentsvisitor.cpp')
-rw-r--r-- | src/render/backend/segmentsvisitor.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/render/backend/segmentsvisitor.cpp b/src/render/backend/segmentsvisitor.cpp index a3a5d059c..68deafb15 100644 --- a/src/render/backend/segmentsvisitor.cpp +++ b/src/render/backend/segmentsvisitor.cpp @@ -140,13 +140,18 @@ void traverseSegmentStripIndexed(Index *indices, uint ndx[2]; Vector3D abc[2]; - ndx[0] = indices[0]; + + startLinePrimitive:ndx[0] = indices[i]; uint idx = ndx[0] * verticesStride; for (uint j = 0; j < maxVerticesDataSize; ++j) abc[0][j] = vertices[idx + j]; while (i < indexInfo.count - 1) { ndx[1] = indices[i + 1]; if (ndx[0] != ndx[1]) { + if (indexInfo.restartEnabled && indexInfo.restartIndexValue == static_cast<int>(ndx[1])) { + i += 2; + goto startLinePrimitive; + } idx = ndx[1] * verticesStride; for (uint j = 0; j < maxVerticesDataSize; ++j) abc[1][j] = vertices[idx + j]; |