sandbox
Loading...
Searching...
No Matches
surface.hpp
1// SPDX-License-Identifier: MIT
2#ifndef LIBSBX_GRAPHICS_DEVICES_SURFACE_HPP_
3#define LIBSBX_GRAPHICS_DEVICES_SURFACE_HPP_
4
5#include <vulkan/vulkan.hpp>
6
7#include <libsbx/utility/noncopyable.hpp>
8
9#include <libsbx/graphics/devices/instance.hpp>
10#include <libsbx/graphics/devices/physical_device.hpp>
11#include <libsbx/graphics/devices/logical_device.hpp>
12
13namespace sbx::graphics {
14
16
17public:
18
20
21 ~surface();
22
23 auto handle() const noexcept -> const VkSurfaceKHR&;
24
25 operator const VkSurfaceKHR&() const noexcept;
26
27 auto capabilities() const noexcept -> VkSurfaceCapabilitiesKHR;
28
29 auto format() const noexcept -> const VkSurfaceFormatKHR&;
30
31 auto current_extent() const noexcept -> VkExtent2D;
32
33private:
34
35 auto _choose_swap_surface_format(const std::vector<VkSurfaceFormatKHR>& available_formats) -> VkSurfaceFormatKHR;
36
37 VkSurfaceKHR _handle{};
38 VkSurfaceCapabilitiesKHR _capabilities{};
39 VkSurfaceFormatKHR _format{};
40
41}; // class surface
42
43} // namespace sbx::graphics
44
45#endif // LIBSBX_GRAPHICS_DEVICES_SURFACE_HPP_
Definition: instance.hpp:11
Definition: logical_device.hpp:61
Definition: physical_device.hpp:17
Definition: surface.hpp:15
Definition: noncopyable.hpp:7