From f32008e95fcaf72ddd5e4659f07a2e3dc913830e Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 14 Dec 2020 18:20:52 +0000 Subject: [PATCH] Add access for changing the 3D preview stage in mesh viewer --- qrenderdoc/Code/Interface/QRDInterface.h | 7 +++++++ qrenderdoc/Windows/BufferViewer.cpp | 13 +++++++++++++ qrenderdoc/Windows/BufferViewer.h | 1 + 3 files changed, 21 insertions(+) diff --git a/qrenderdoc/Code/Interface/QRDInterface.h b/qrenderdoc/Code/Interface/QRDInterface.h index 3e7d6d1d6..a9db2dc6c 100644 --- a/qrenderdoc/Code/Interface/QRDInterface.h +++ b/qrenderdoc/Code/Interface/QRDInterface.h @@ -572,6 +572,13 @@ buffer view. )"); virtual void SetCurrentView(int32_t view) = 0; + DOCUMENT(R"(For a mesh view, set the current preview stage. This is ignored when called on a raw +buffer view. + +:param MeshDataStage stage: The stage to show +)"); + virtual void SetPreviewStage(MeshDataStage stage) = 0; + protected: IBufferViewer() = default; ~IBufferViewer() = default; diff --git a/qrenderdoc/Windows/BufferViewer.cpp b/qrenderdoc/Windows/BufferViewer.cpp index b7eaaf1d3..1214a7858 100644 --- a/qrenderdoc/Windows/BufferViewer.cpp +++ b/qrenderdoc/Windows/BufferViewer.cpp @@ -3399,6 +3399,19 @@ void BufferViewer::SetCurrentView(int32_t view) ui->viewIndex->setValue(view); } +void BufferViewer::SetPreviewStage(MeshDataStage stage) +{ + if(m_MeshView) + { + if(stage == MeshDataStage::VSIn) + ui->outputTabs->setCurrentIndex(0); + else if(stage == MeshDataStage::VSOut) + ui->outputTabs->setCurrentIndex(1); + else if(stage == MeshDataStage::GSOut) + ui->outputTabs->setCurrentIndex(2); + } +} + void BufferViewer::ViewBuffer(uint64_t byteOffset, uint64_t byteSize, ResourceId id, const rdcstr &format) { diff --git a/qrenderdoc/Windows/BufferViewer.h b/qrenderdoc/Windows/BufferViewer.h index 6d015f6b2..fa3c2f590 100644 --- a/qrenderdoc/Windows/BufferViewer.h +++ b/qrenderdoc/Windows/BufferViewer.h @@ -88,6 +88,7 @@ public: void ScrollToColumn(int32_t column, MeshDataStage stage = MeshDataStage::VSIn) override; void SetCurrentInstance(int32_t instance) override; void SetCurrentView(int32_t view) override; + void SetPreviewStage(MeshDataStage stage) override; // ICaptureViewer void OnCaptureLoaded() override;