Program Listing for File surface.hpp

Return to documentation for file (inexor/vulkan-renderer/wrapper/windows/surface.hpp)

#pragma once

#include <volk.h>

// Forward declaration
struct GLFWwindow;

namespace inexor::vulkan_renderer::wrapper::windows {

class WindowSurface {
    VkInstance m_instance{VK_NULL_HANDLE};
    VkSurfaceKHR m_surface{VK_NULL_HANDLE};

public:
    WindowSurface(VkInstance instance, GLFWwindow *window);

    WindowSurface(const WindowSurface &) = delete;
    WindowSurface(WindowSurface &&) noexcept;

    ~WindowSurface();

    WindowSurface &operator=(const WindowSurface &) = delete;
    WindowSurface &operator=(WindowSurface &&) = delete;

    [[nodiscard]] auto surface() const {
        return m_surface;
    }
};

} // namespace inexor::vulkan_renderer::wrapper::windows