Graphics v0.0.0
A simple abstraction layer for the modern graphics APIs.
载入中...
搜索中...
未找到
VKPhysicalDevice.h
1// Copyright 2022 ShenMian
2// License(Apache-2.0)
3
4#pragma once
5
6#include <optional>
7#include <string_view>
8#include <vector>
9#include <vulkan/vulkan.h>
10
15{
16public:
17 VKPhysicalDevice() = default;
18
19 VKPhysicalDevice(VkPhysicalDevice device, VkSurfaceKHR surface);
20
21 const VkPhysicalDeviceProperties& get_properties() const noexcept;
22
23 const VkPhysicalDeviceFeatures& get_features() const noexcept;
24
25 VkSurfaceKHR get_surface() const noexcept;
26
30 std::string_view get_name() const noexcept;
31
35 std::string_view get_vendor_name() const noexcept;
36
37 VkSurfaceCapabilitiesKHR get_surface_capabilities() const;
38 std::vector<VkSurfaceFormatKHR> get_surface_formats() const;
39 std::vector<VkPresentModeKHR> get_surface_present_modes() const;
40
41 bool is_extension_available(std::string_view name) const;
42
43 std::optional<uint32_t> graphics = std::nullopt;
44 std::optional<uint32_t> compute = std::nullopt;
45 std::optional<uint32_t> transfer = std::nullopt;
46 std::optional<uint32_t> present = std::nullopt;
47
48 operator VkPhysicalDevice();
49 operator VkPhysicalDevice() const;
50
51private:
52 VkPhysicalDevice handle_;
53 VkPhysicalDeviceProperties properties_;
54 VkPhysicalDeviceFeatures features_;
55
56 VkSurfaceKHR surface_;
57
58 std::vector<VkExtensionProperties> available_extensions_;
59};
Vulkan 物理设备.
Definition: VKPhysicalDevice.h:15
std::string_view get_vendor_name() const noexcept
获取设备供应商名称.
Definition: VKPhysicalDevice.cpp:60
std::string_view get_name() const noexcept
获取设备名称.
Definition: VKPhysicalDevice.cpp:55