Skip to content
Snippets Groups Projects
Context.hpp 686 B
Newer Older
#pragma once

#include <vulkan/vulkan.hpp>

namespace vkcv {

	class Context final {
	private:
		vk::Instance m_instance;
		vk::PhysicalDevice m_physicalDevice;
		vk::Device m_device;
		
		Context(vk::Instance instance, vk::PhysicalDevice physicalDevice, vk::Device device);

	public:
		Context(const Context &other) = delete;
		Context(Context &&other) = default;

		vk::Instance getInstance();
		vk::PhysicalDevice getPhysicalDevice();
		vk::Device getDevice();

		virtual ~Context();

		Context& operator=(const Context &other) = delete;
		Context& operator=(Context &&other) = default;
		
		static Context create(const char* applicationName, uint32_t applicationVersion);
		
	};

}