42 lines
1.2 KiB
C++
42 lines
1.2 KiB
C++
/**
|
|
* Factory partition module is responsible for construction of render objects
|
|
*/
|
|
|
|
export module vulkan_render:factory;
|
|
import :hardware;
|
|
import :resources;
|
|
import :control;
|
|
import :data;
|
|
|
|
export namespace vulkan_render {
|
|
|
|
class ResourcesFactory {
|
|
public:
|
|
/**
|
|
* Initialize frames swapchain
|
|
* @param context Vulkan context with initialized device and surface capabilities.
|
|
* @param surface surface origin. Extent will be clamped with frames size.
|
|
*/
|
|
static Swapchain CreateSwapchain(const Context &context,Surface &surface);
|
|
|
|
private:
|
|
/**
|
|
* Initialize images and views for swapchain frames
|
|
* @param context Vulkan context with ready device.
|
|
* @param swapchain frames target with initialized swapchain origin.
|
|
* @param surface surface origin.
|
|
*/
|
|
static void SetupFrames(const Context &context, Swapchain &swapchain, const Surface &surface);
|
|
};
|
|
|
|
class DataFactory {
|
|
public:
|
|
static Texture<TextureMode::RENDER> CreateRenderTexture(
|
|
const Context &context,
|
|
const RenderCommands &commands,
|
|
std::uint32_t width, std::uint32_t height,
|
|
std::span<std::byte> textureData
|
|
);
|
|
};
|
|
|
|
} |