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