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
23 {
24 public:
26 {
27
28 }
29 virtual void bind(RHI::CommandBuffer* cmdBuf,RHI::Pipeline* pipeline) = 0;
30 virtual void addConstBuffer(RHI::ConstBuffer* buffer) = 0;
31 virtual void addTexture(Image* texture,TextureElement element) = 0;
32 virtual void setTexture(Image* texture,TextureElement element) = 0;
33 virtual void addSampler(Sampler* sampler,SamplerElement element) = 0;
34 virtual void create() = 0;
35 virtual void update() = 0;
37 bool isBound(const TextureElement& element) const {
38 return m_textures.find(element) != m_textures.end();
39 }
40 protected:
41 std::vector<RHI::ConstBuffer*> m_constBuffers;
42 std::unordered_map<TextureElement,Image*> m_textures;
43 std::vector<std::pair<Sampler*,SamplerElement>> m_samplers;
44 //std::vector<std::pair<Image*, TextureElement>> m_textures;
45 bool m_dirty = true;
46 };
47}
48#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 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