61 lines
1.5 KiB
C++
61 lines
1.5 KiB
C++
// =============================================
|
|
// Aster: image_manager.h
|
|
// Copyright (c) 2020-2024 Anish Bhobe
|
|
// =============================================
|
|
|
|
#pragma once
|
|
|
|
#include "aster/aster.h"
|
|
#include "aster/core/image.h"
|
|
#include "manager.h"
|
|
|
|
namespace systems
|
|
{
|
|
|
|
struct Texture2DCreateInfo
|
|
{
|
|
vk::Format m_Format = vk::Format::eUndefined;
|
|
vk::Extent2D m_Extent = {};
|
|
cstr m_Name = nullptr;
|
|
bool m_IsSampled = true;
|
|
bool m_IsMipMapped = false;
|
|
bool m_IsStorage = false;
|
|
};
|
|
|
|
struct TextureCubeCreateInfo
|
|
{
|
|
vk::Format m_Format = vk::Format::eUndefined;
|
|
u32 m_Side = 0;
|
|
cstr m_Name = nullptr;
|
|
bool m_IsSampled = true;
|
|
bool m_IsMipMapped = false;
|
|
bool m_IsStorage = false;
|
|
};
|
|
|
|
struct AttachmentCreateInfo
|
|
{
|
|
vk::Format m_Format = vk::Format::eUndefined;
|
|
vk::Extent2D m_Extent = {};
|
|
cstr m_Name = nullptr;
|
|
};
|
|
|
|
struct DepthStencilImageCreateInfo
|
|
{
|
|
vk::Extent2D m_Extent = {};
|
|
cstr m_Name = nullptr;
|
|
};
|
|
|
|
using ImageHandle = Manager<Image>::Handle;
|
|
|
|
class ImageManager final : public Manager<Image>
|
|
{
|
|
public:
|
|
ImageManager(const Device *device, const u32 maxCount, const u8 binding);
|
|
|
|
[[nodiscard]] Handle CreateTexture2D(const Texture2DCreateInfo &createInfo);
|
|
[[nodiscard]] Handle CreateTextureCube(const TextureCubeCreateInfo &createInfo);
|
|
[[nodiscard]] Handle CreateAttachment(const AttachmentCreateInfo &createInfo);
|
|
[[nodiscard]] Handle CreateDepthStencilImage(const DepthStencilImageCreateInfo &createInfo);
|
|
};
|
|
} // namespace systems
|