Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
src_gui_vulkan_qvulkanwindow.cpp
Go to the documentation of this file.
1
// Copyright (C) 2018 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
#
include
<
QGuiApplication
>
4
#
include
<
QVulkanDeviceFunctions
>
5
#
include
<
QVulkanWindow
>
6
7
namespace
src_gui_vulkan_qvulkanwindow
{
8
VkCommandBuffer
commandBuffer
;
9
const
VkRenderPassBeginInfo
*
renderPassBegin
=
nullptr
;
10
VkSubpassContents
contents
;
11
//! [0]
12
class
VulkanRenderer
:
public
QVulkanWindowRenderer
13
{
14
public
:
15
VulkanRenderer
(QVulkanWindow *w) :
m_window
(
w
),
m_devFuncs
(
nullptr
) { }
16
17
void
initResources
()
override
18
{
19
m_devFuncs = m_window->vulkanInstance()->deviceFunctions(m_window->device());
20
// ..
21
}
22
void
initSwapChainResources
()
override
{
/* ... */
}
23
void
releaseSwapChainResources
()
override
{
/* ... */
}
24
void
releaseResources
()
override
{
/* ... */
}
25
26
void
startNextFrame
()
override
27
{
28
VkCommandBuffer cmdBuf = m_window->currentCommandBuffer();
29
// ...
30
m_devFuncs->vkCmdBeginRenderPass(commandBuffer, renderPassBegin, contents);
31
// ...
32
m_window->frameReady();
33
}
34
35
private
:
36
QVulkanWindow *m_window;
37
QVulkanDeviceFunctions *m_devFuncs;
38
};
39
40
class
VulkanWindow
:
public
QVulkanWindow
41
{
42
public
:
43
QVulkanWindowRenderer
*
createRenderer
()
override
{
44
return
new
VulkanRenderer(
this
);
45
}
46
};
47
48
int
main
(
int
argc,
char
*argv[])
49
{
50
QGuiApplication app(argc, argv);
51
52
QVulkanInstance inst;
53
// enable the standard validation layers, when available
54
inst.setLayers({
"VK_LAYER_KHRONOS_validation"
});
55
if
(!inst.create())
56
qFatal(
"Failed to create Vulkan instance: %d"
, inst.errorCode());
57
58
VulkanWindow
w;
59
w.setVulkanInstance(&inst);
60
w.showMaximized();
61
62
return
app.exec();
63
}
64
//! [0]
65
66
//! [1]
67
class
Renderer
{
68
void
startNextFrame();
69
// ...
70
71
VkDescriptorBufferInfo m_uniformBufInfo[
QVulkanWindow
::
MAX_CONCURRENT_FRAME_COUNT
];
72
QVulkanWindow *m_window =
nullptr
;
73
};
74
75
void
Renderer
::startNextFrame()
76
{
77
VkDescriptorBufferInfo &uniformBufInfo(m_uniformBufInfo[m_window->currentFrame()]);
78
// ...
79
}
80
//! [1]
81
82
}
// src_gui_vulkan_qvulkanwindow
83
84
85
namespace
src_gui_vulkan_qvulkanwindow2
{
86
87
//! [2]
88
class
Renderer
{
89
void
startNextFrame();
90
// ...
91
92
VkDescriptorBufferInfo m_uniformBufInfo[
QVulkanWindow
::
MAX_CONCURRENT_FRAME_COUNT
];
93
QVulkanWindow *m_window =
nullptr
;
94
};
95
96
void
Renderer
::startNextFrame()
97
{
98
const
int
count = m_window->concurrentFrameCount();
99
// for (int i = 0; i < count; ++i)
100
// m_uniformBufInfo[i] = ...
101
// ...
102
}
103
//! [2]
104
105
}
// src_gui_vulkan_qvulkanwindow2
src_gui_vulkan_qvulkanwindow2::Renderer
[2]
Definition
src_gui_vulkan_qvulkanwindow.cpp:88
src_gui_vulkan_qvulkanwindow::Renderer
[0]
Definition
src_gui_vulkan_qvulkanwindow.cpp:67
src_gui_vulkan_qvulkanwindow::VulkanRenderer
[0]
Definition
src_gui_vulkan_qvulkanwindow.cpp:13
src_gui_vulkan_qvulkanwindow::VulkanRenderer::VulkanRenderer
VulkanRenderer(QVulkanWindow *w)
Definition
src_gui_vulkan_qvulkanwindow.cpp:15
src_gui_vulkan_qvulkanwindow::VulkanRenderer::initResources
void initResources() override
Definition
src_gui_vulkan_qvulkanwindow.cpp:17
src_gui_vulkan_qvulkanwindow::VulkanRenderer::initSwapChainResources
void initSwapChainResources() override
Definition
src_gui_vulkan_qvulkanwindow.cpp:22
src_gui_vulkan_qvulkanwindow::VulkanRenderer::releaseResources
void releaseResources() override
Definition
src_gui_vulkan_qvulkanwindow.cpp:24
src_gui_vulkan_qvulkanwindow::VulkanRenderer::startNextFrame
void startNextFrame() override
Definition
src_gui_vulkan_qvulkanwindow.cpp:26
src_gui_vulkan_qvulkanwindow::VulkanRenderer::releaseSwapChainResources
void releaseSwapChainResources() override
Definition
src_gui_vulkan_qvulkanwindow.cpp:23
src_gui_vulkan_qvulkanwindow::VulkanWindow
Definition
src_gui_vulkan_qvulkanwindow.cpp:41
src_gui_vulkan_qvulkanwindow::VulkanWindow::createRenderer
QVulkanWindowRenderer * createRenderer() override
Definition
src_gui_vulkan_qvulkanwindow.cpp:43
src_gui_vulkan_qvulkanwindow2
Definition
src_gui_vulkan_qvulkanwindow.cpp:85
src_gui_vulkan_qvulkanwindow
Definition
src_gui_vulkan_qvulkanwindow.cpp:7
src_gui_vulkan_qvulkanwindow::contents
VkSubpassContents contents
Definition
src_gui_vulkan_qvulkanwindow.cpp:10
src_gui_vulkan_qvulkanwindow::commandBuffer
VkCommandBuffer commandBuffer
Definition
src_gui_vulkan_qvulkanwindow.cpp:8
src_gui_vulkan_qvulkanwindow::main
int main(int argc, char *argv[])
Definition
src_gui_vulkan_qvulkanwindow.cpp:48
src_gui_vulkan_qvulkanwindow::renderPassBegin
const VkRenderPassBeginInfo * renderPassBegin
Definition
src_gui_vulkan_qvulkanwindow.cpp:9
qtbase
src
gui
doc
snippets
code
src_gui_vulkan_qvulkanwindow.cpp
Generated on
for Qt by
1.18.0