16 class SPARK_RENDER_VK_EXPORT
VulkanFactory final :
public GraphicsFactory<VulkanDescriptorLayout, IVulkanBuffer, IVulkanVertexBuffer, IVulkanIndexBuffer, IVulkanImage,
33 [[nodiscard]] std::unique_ptr<IVulkanBuffer> createBuffer(BufferType type,
35 std::size_t element_size,
37 bool allow_write)
const override;
40 [[nodiscard]] std::unique_ptr<IVulkanBuffer> createBuffer(
const std::string& name,
43 std::size_t element_size,
45 bool allow_write)
const override;
48 [[nodiscard]] std::unique_ptr<IVulkanVertexBuffer> createVertexBuffer(
const VulkanVertexBufferLayout& layout, BufferUsage usage,
unsigned elements)
const override;
51 [[nodiscard]] std::unique_ptr<IVulkanVertexBuffer> createVertexBuffer(
const std::string& name,
54 unsigned elements)
const override;
57 [[nodiscard]] std::unique_ptr<IVulkanIndexBuffer> createIndexBuffer(
const VulkanIndexBufferLayout& layout, BufferUsage usage,
unsigned elements)
const override;
60 [[nodiscard]] std::unique_ptr<IVulkanIndexBuffer> createIndexBuffer(
const std::string& name,
63 unsigned elements)
const override;
66 [[nodiscard]] std::unique_ptr<IVulkanImage> createAttachment(Format format,
const math::Vector2<unsigned>& size, MultiSamplingLevel samples)
const override;
69 [[nodiscard]] std::unique_ptr<IVulkanImage> createAttachment(
const std::string& name,
72 MultiSamplingLevel samples)
const override;
75 [[nodiscard]] std::unique_ptr<IVulkanImage> createTexture(Format format,
77 ImageDimensions dimension,
80 MultiSamplingLevel samples,
81 bool allow_write)
const override;
84 [[nodiscard]] std::unique_ptr<IVulkanImage> createTexture(
const std::string& name,
87 ImageDimensions dimension,
90 MultiSamplingLevel samples,
91 bool allow_write)
const override;
94 [[nodiscard]] std::vector<std::unique_ptr<IVulkanImage>> createTextures(std::size_t elements,
97 ImageDimensions dimension,
100 MultiSamplingLevel samples,
101 bool allow_write)
const override;
104 [[nodiscard]] std::unique_ptr<IVulkanSampler> createSampler(FilterMode mag_filter,
105 FilterMode min_filter,
109 MipMapMode mip_map_mode,
113 float anisotropy)
const override;
116 [[nodiscard]] std::unique_ptr<IVulkanSampler> createSampler(
const std::string& name,
117 FilterMode mag_filter,
118 FilterMode min_filter,
122 MipMapMode mip_map_mode,
126 float anisotropy)
const override;
129 [[nodiscard]] std::vector<std::unique_ptr<IVulkanSampler>> createSamplers(std::size_t elements,
130 FilterMode mag_filter,
131 FilterMode min_filter,
135 MipMapMode mip_map_mode,
139 float anisotropy)
const override;
143 std::unique_ptr<Impl> m_impl;