summaryrefslogtreecommitdiffstats
path: root/tests/manual/rhi/tessellation/tessellation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/manual/rhi/tessellation/tessellation.cpp')
-rw-r--r--tests/manual/rhi/tessellation/tessellation.cpp28
1 files changed, 24 insertions, 4 deletions
diff --git a/tests/manual/rhi/tessellation/tessellation.cpp b/tests/manual/rhi/tessellation/tessellation.cpp
index 56e9503afc..a50ddeeeb2 100644
--- a/tests/manual/rhi/tessellation/tessellation.cpp
+++ b/tests/manual/rhi/tessellation/tessellation.cpp
@@ -1,5 +1,5 @@
// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "../shared/examplefw.h"
@@ -9,9 +9,13 @@ static const float tri[] = {
0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f,
};
+static const bool INDEXED = false;
+static const quint32 indices[] = { 0, 1, 2 };
+
struct {
QVector<QRhiResource *> releasePool;
QRhiBuffer *vbuf = nullptr;
+ QRhiBuffer *ibuf = nullptr;
QRhiBuffer *ubuf = nullptr;
QRhiShaderResourceBindings *srb = nullptr;
QRhiGraphicsPipeline *ps = nullptr;
@@ -29,6 +33,12 @@ void Window::customInit()
d.vbuf->create();
d.releasePool << d.vbuf;
+ if (INDEXED) {
+ d.ibuf = m_r->newBuffer(QRhiBuffer::Immutable, QRhiBuffer::IndexBuffer, sizeof(indices));
+ d.ibuf->create();
+ d.releasePool << d.ibuf;
+ }
+
d.ubuf = m_r->newBuffer(QRhiBuffer::Dynamic, QRhiBuffer::UniformBuffer, 64 + 4 + 4);
d.ubuf->create();
d.releasePool << d.ubuf;
@@ -71,8 +81,12 @@ void Window::customInit()
d.initialUpdates = m_r->nextResourceUpdateBatch();
d.initialUpdates->uploadStaticBuffer(d.vbuf, tri);
+
const float amplitude = 0.5f;
d.initialUpdates->updateDynamicBuffer(d.ubuf, 68, 4, &amplitude);
+
+ if (INDEXED)
+ d.initialUpdates->uploadStaticBuffer(d.ibuf, indices);
}
void Window::customRelease()
@@ -96,14 +110,20 @@ void Window::customRender()
u->updateDynamicBuffer(d.ubuf, 0, 64, d.winProj.constData());
}
u->updateDynamicBuffer(d.ubuf, 64, 4, &d.time);
- d.time += 0.1f;
+ d.time += 0.01f;
cb->beginPass(m_sc->currentFrameRenderTarget(), m_clearColor, { 1.0f, 0 }, u);
cb->setGraphicsPipeline(d.ps);
cb->setViewport({ 0, 0, float(outputSizeInPixels.width()), float(outputSizeInPixels.height()) });
cb->setShaderResources();
QRhiCommandBuffer::VertexInput vbufBinding(d.vbuf, 0);
- cb->setVertexInput(0, 1, &vbufBinding);
- cb->draw(3);
+ if (INDEXED) {
+ cb->setVertexInput(0, 1, &vbufBinding, d.ibuf, 0, QRhiCommandBuffer::IndexUInt32);
+ cb->drawIndexed(3);
+ } else {
+ cb->setVertexInput(0, 1, &vbufBinding);
+ cb->draw(3);
+ }
+
cb->endPass();
}