Revision control
++ // Copyright (C) 2017 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
++
++ /*!
++ \example hellovulkancubes
++ \meta installpath vulkan
++ \title Hello Vulkan Cubes Example
++ \ingroup examples-vulkan
++ \brief Shows the basics of using QVulkanWindow.
++ \examplecategory {Graphics}
++
++ The \e{Hello Vulkan Cubes Example} shows more advanced usage of QVulkanWindow.
++
++ \image hellovulkancubes.png {Screenshot of example demonstrating instanced
++ drawing of mesh from a file}
++
++ In this example there is a mesh loaded from a file and two different
++ materials and corresponding graphics pipelines. The rounded cubes are drawn
++ using instancing and feature a Phong lighting model with a single
++ directional light.
++
++ Unlike hellovulkantexture and hellovulkantriangle, the uniform buffer
++ handling takes an alternative approach here: dynamic uniform buffers are
++ used instead of multiple descriptor sets.
++
++ The example requires QtConcurrent since it demonstrates simple usage of
++ QtConcurrent::run(), QFuture, and QFutureWatcher in combination of
++ QVulkanWindow. Mesh and shader data loading, the potentially expensive
++ graphics pipeline construction, and the building of the frame command buffer
++ are all done in separate worker threads.
++
++ The scene is embedded into a widget-based user interface. The QVulkanWindow
++ subclass handles mouse and keyboard input as well since it provides a
++ first-person style camera in order to allow moving around in the scene.
++
++ \include examples-run.qdocinc
++ */