/****************************************************************************
**
** Copyright (C) 2017 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
    \example hellovulkanwindow
    \title Hello Vulkan Window Example
    \ingroup examples-vulkan
    \brief Shows the basics of using QVulkanWindow.

    The \e{Hello Vulkan Window Example} shows the basics of using QVulkanWindow
    in order to display rendering with the Vulkan graphics API on systems that
    support this.

    \image hellovulkanwindow.png

    In this example there will be no actual rendering: it simply begins and
    ends a render pass, which results in clearing the buffers to a fixed value.
    The color buffer clear value changes on every frame.

    \section1 Startup

    Each Qt application using Vulkan will have to have a \c{Vulkan instance}
    which encapsulates application-level state and initializes a Vulkan library.

    A QVulkanWindow must always be associated with a QVulkanInstance and hence
    the example performs instance creation before the window. The
    QVulkanInstance object must also outlive the window.

    \snippet hellovulkanwindow/main.cpp 0

    The example enables validation layers, when supported. When the requested
    layers are not present, the request will be ignored. Additional layers and
    extensions can be enabled in a similar manner.

    \snippet hellovulkanwindow/main.cpp 1

    Once the instance is ready, it is time to create a window. Note that \c w
    lives on the stack and is declared after \c inst.

    \section1 The QVulkanWindow Subclass

    To add custom functionality to a QVulkanWindow, subclassing is used. This
    follows the existing patterns from QOpenGLWindow and QOpenGLWidget.
    However, QVulkanWindow utilizes a separate QVulkanWindowRenderer object.
    This resembles QQuickFramebufferObject, and allows better separation of the
    functions that are supposed to be reimplemented.

    \snippet hellovulkanwindow/hellovulkanwindow.h 0

    The QVulkanWindow subclass reimplements the factory function
    QVulkanWindow::createRenderer(). This simply returns a new instance of the
    QVulkanWindowRenderer subclass. In order to be able to access various
    Vulkan resources via the window object, a pointer to the window is passed
    and stored via the constructor.

    \snippet hellovulkanwindow/hellovulkanwindow.cpp 0

    Graphics resource creation and destruction is typically done in one of the
    init - resource functions.

    \snippet hellovulkanwindow/hellovulkanwindow.cpp 1

    \section1 The Actual Rendering

    QVulkanWindow subclasses queue their draw calls in their reimplementation
    of QVulkanWindowRenderer::startNextFrame(). Once done, they are required to
    call back QVulkanWindow::frameReady(). The example has no asynchronous
    command generation, so the frameReady() call is made directly from
    startNextFrame().

    \snippet hellovulkanwindow/hellovulkanwindow.cpp 2

    To get continuous updates, the example simply invokes
    QWindow::requestUpdate() in order to schedule a repaint.

    \include examples-run.qdocinc
*/
