From 4de23d8d8b7a01b04089edf9859f6fcf400f8f81 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 5 Jun 2018 21:00:14 +0100 Subject: [PATCH] Fetch enough data even for odd vertex attribute offsets. Closes #1007 --- qrenderdoc/Windows/BufferViewer.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/qrenderdoc/Windows/BufferViewer.cpp b/qrenderdoc/Windows/BufferViewer.cpp index e7ef137cc..c741a32cf 100644 --- a/qrenderdoc/Windows/BufferViewer.cpp +++ b/qrenderdoc/Windows/BufferViewer.cpp @@ -1659,12 +1659,16 @@ void BufferViewer::RT_FetchMeshData(IReplayController *r) bool pi = false; bool pv = false; + uint32_t maxAttrOffset = 0; + for(const FormatElement &col : m_ModelVSIn->columns) { if(col.buffer == vbIdx) { used = true; + maxAttrOffset = qMax(maxAttrOffset, col.offset); + if(col.perinstance) pi = true; else @@ -1701,7 +1705,7 @@ void BufferViewer::RT_FetchMeshData(IReplayController *r) if(used) { bytebuf bufdata = r->GetBufferData(vb.resourceId, vb.byteOffset + offset * vb.byteStride, - (maxIdx + 1) * vb.byteStride); + (maxIdx + 1) * vb.byteStride + maxAttrOffset); buf->data = new byte[bufdata.size()]; memcpy(buf->data, bufdata.data(), bufdata.size());