FCT
载入中...
搜索中...
未找到
PassResource.h
浏览该文件的文档.
1//
2// Created by Administrator on 2025/4/14.
3//
4
5#ifndef FCT_PASSRESOURCE_H
6#define FCT_PASSRESOURCE_H
7#include "ResourceLayout.h"
9namespace FCT
10{
11 class Sampler;
12 class SamplerElement;
13 class TextureElement;
14 class Window;
15
16 namespace RHI
17 {
18 class Pipeline;
19 class CommandBuffer;
20 }
21
22 class PassResource : public RefCount
23 {
24 public:
26 {
27
28 }
29 virtual ~PassResource() = default;
30 virtual void bind(RHI::CommandBuffer* cmdBuf,RHI::Pipeline* pipeline) = 0;
31 virtual void addConstBuffer(RHI::ConstBuffer* buffer) = 0;
32 virtual void addTexture(Image* texture,TextureElement element) = 0;
33 virtual void setTexture(Image* texture,TextureElement element) = 0;
34 virtual void addSampler(Sampler* sampler,SamplerElement element) = 0;
35 virtual void create() = 0;
36 virtual void update() = 0;
38 bool isBound(const TextureElement& element) const {
39 return m_textures.find(element) != m_textures.end();
40 }
41 protected:
42 std::vector<RHI::ConstBuffer*> m_constBuffers;
43 std::unordered_map<TextureElement,Image*> m_textures;
44 std::vector<std::pair<Sampler*,SamplerElement>> m_samplers;
45 //std::vector<std::pair<Image*, TextureElement>> m_textures;
46 bool m_dirty = true;
47 };
48}
49#endif //PASSRESOURCE_H
virtual void addSampler(Sampler *sampler, SamplerElement element)=0
virtual void bind(RHI::CommandBuffer *cmdBuf, RHI::Pipeline *pipeline)=0
virtual void create()=0
std::vector< std::pair< Sampler *, SamplerElement > > m_samplers
virtual void addConstBuffer(RHI::ConstBuffer *buffer)=0
virtual void update()=0
virtual ~PassResource()=default
virtual void addTexture(Image *texture, TextureElement element)=0
virtual void markAllDescriptorSetsNeedRecreate()=0
bool isBound(const TextureElement &element) const
std::vector< RHI::ConstBuffer * > m_constBuffers
std::unordered_map< TextureElement, Image * > m_textures
virtual void setTexture(Image *texture, TextureElement element)=0