Graphics v0.0.0
A simple abstraction layer for the modern graphics APIs.
载入中...
搜索中...
未找到
VKDevice.h
1// Copyright 2022 ShenMian
2// License(Apache-2.0)
3
4#pragma once
5
6#include "VKPhysicalDevice.h"
7#include <optional>
8#include <vulkan/vulkan.h>
9
13class VKDevice final
14{
15public:
19 enum class QueueType
20 {
21 Graphics,
22 Compute,
23 Transfer,
24 Present
25 };
26
27 VKDevice() = default;
28 VKDevice(VkDevice device);
29 VKDevice(VkDevice device, VKPhysicalDevice& physicalDevice);
30
36 VkQueue get_queue(QueueType type) const;
37
43 std::optional<uint32_t> get_queue_index(QueueType type) const;
44
45 VKPhysicalDevice& get_physical_device() noexcept;
46
47 void destroy();
48
49 operator VkDevice() noexcept;
50 operator VkDevice() const noexcept;
51
52private:
53 VkDevice handle_;
54 VKPhysicalDevice physical_device_;
55};
Vulkan 逻辑设备.
Definition: VKDevice.h:14
QueueType
队列类型.
Definition: VKDevice.h:20
std::optional< uint32_t > get_queue_index(QueueType type) const
获取队列索引.
Definition: VKDevice.cpp:36
VkQueue get_queue(QueueType type) const
获取队列.
Definition: VKDevice.cpp:15
Vulkan 物理设备.
Definition: VKPhysicalDevice.h:15