diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2017-09-03 12:09:57 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2017-09-04 21:20:25 +0000 |
commit | 5e13bb3f093627af02f86602ab02f98bbf3648a2 (patch) | |
tree | 994b0f9fc18344ec5adfbab78f2584948fddc173 /tests/auto/render/renderviews | |
parent | e2a214855303f9579fc5c5e941a7e1a7e4080566 (diff) |
Add support for FrontToBack sorting
A typical renderer with opaque-transparent passes will often want
to use FrontToBack in the opaque pass (even though this is usually
not strictly required).
Change-Id: I071b62424a5446c86d76c6045c126a599534bf80
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'tests/auto/render/renderviews')
-rw-r--r-- | tests/auto/render/renderviews/tst_renderviews.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/auto/render/renderviews/tst_renderviews.cpp b/tests/auto/render/renderviews/tst_renderviews.cpp index 2c8486ed0..d941126e2 100644 --- a/tests/auto/render/renderviews/tst_renderviews.cpp +++ b/tests/auto/render/renderviews/tst_renderviews.cpp @@ -205,6 +205,35 @@ private Q_SLOTS: // RenderCommands are deleted by RenderView dtor } + void checkRenderCommandFrontToBackSorting() + { + // GIVEN + RenderView renderView; + QVector<RenderCommand *> rawCommands; + QVector<QSortPolicy::SortType> sortTypes; + + sortTypes.push_back(QSortPolicy::FrontToBack); + + for (int i = 0; i < 200; ++i) { + RenderCommand *c = new RenderCommand(); + c->m_depth = float(i); + rawCommands.push_back(c); + } + + // WHEN + renderView.addSortType(sortTypes); + renderView.setCommands(rawCommands); + renderView.sort(); + + // THEN + const QVector<RenderCommand *> sortedCommands = renderView.commands(); + QCOMPARE(rawCommands.size(), sortedCommands.size()); + for (int j = 1; j < sortedCommands.size(); ++j) + QVERIFY(sortedCommands.at(j - 1)->m_depth < sortedCommands.at(j)->m_depth); + + // RenderCommands are deleted by RenderView dtor + } + void checkRenderCommandStateCostSorting() { // GIVEN |