FCT
载入中...
搜索中...
未找到
VK_PassResource.h
浏览该文件的文档.
1//
2// Created by Administrator on 2025/4/14.
3//
4#include "./PassResource.h"
5#ifndef VK_PASSRESOURCE_H
6#define VK_PASSRESOURCE_H
7namespace FCT
8{
10 public:
12 ~VK_PassResource() override;
13 void addConstBuffer(RHI::ConstBuffer* buffer) override;
14 void addSampler(Sampler* sampler, SamplerElement element) override;
15 void addTexture(Image* texture, TextureElement element) override;
16 void setTexture(Image* texture, TextureElement element) override;
18 void markDescriptorSetDirty(uint32_t frameIdx);
19 bool createDescriptorSetsAndLayouts(uint32_t frameIdx, std::vector<vk::DescriptorSetLayout>& outLayouts,
20 std::vector<vk::DescriptorSet>& outDescriptorSets);
21 void create() override;
22 void updateDescriptorSetsIfNeeded(uint32_t frameIdx);
23 vk::DescriptorSet getDescriptorSet(uint32_t frameIdx, uint32_t setIndex);
25 bool recreateDescriptorSetsIfNeeded(uint32_t frameIdx);
26 void update() override;
27 void bind(RHI::CommandBuffer* cmdBuf, RHI::Pipeline* pipeline) override;
29 protected:
31 std::vector<std::vector<vk::DescriptorSet>> m_descriptorSets;
32 std::vector<uint8_t> m_dirtyFlags;
33 std::vector<uint8_t> m_needRecreate;
34 std::vector<vk::DescriptorSetLayout> m_descriptorSetLayouts;
35 std::unordered_map<TextureElement,size_t> m_textureViewHashes;
36 };
37}
38#endif //VK_PASSRESOURCE_H
bool createDescriptorSetsAndLayouts(uint32_t frameIdx, std::vector< vk::DescriptorSetLayout > &outLayouts, std::vector< vk::DescriptorSet > &outDescriptorSets)
std::vector< uint8_t > m_needRecreate
vk::DescriptorSet getDescriptorSet(uint32_t frameIdx, uint32_t setIndex)
std::unordered_map< TextureElement, size_t > m_textureViewHashes
void updateDescriptorSetsIfNeeded(uint32_t frameIdx)
VK_PassResource(VK_Context *ctx)
void bind(RHI::CommandBuffer *cmdBuf, RHI::Pipeline *pipeline) override
void setTexture(Image *texture, TextureElement element) override
void markDescriptorSetDirty(uint32_t frameIdx)
std::vector< vk::DescriptorSetLayout > m_descriptorSetLayouts
std::vector< uint8_t > m_dirtyFlags
void addConstBuffer(RHI::ConstBuffer *buffer) override
bool recreateDescriptorSetsIfNeeded(uint32_t frameIdx)
std::vector< std::vector< vk::DescriptorSet > > m_descriptorSets
void addTexture(Image *texture, TextureElement element) override
void addSampler(Sampler *sampler, SamplerElement element) override