FCT
载入中...
搜索中...
未找到
MutilBufferImage.h
浏览该文件的文档.
1//
2// Created by Administrator on 2025/3/30.
3//
4#include "./Image.h"
5#ifndef MUTILBUFFERIMAGE_H
6#define MUTILBUFFERIMAGE_H
7
8
9namespace FCT
10{
11 class MutilBufferImage;
12 class Context;
14 {
15 public:
17 Format format() const override;
18 Samples samples() const override;
19 private:
20 };
21 class MutilBufferImage : public Image{
22 public:
25 void imageCount(size_t count) { m_imageCount = count; }
26 void create() override;
27 void resize(uint32_t width, uint32_t height);
28 void create(std::vector<RHI::Image*> images);
29 void as(ImageUsages usage) override;
30 void bind(Context* ctx) override;
31 Image* getImage() const override { return const_cast<MutilBufferImage*>(this); }
32 std::vector<Image*> getTargetImages() override;
36 RHI::Image* currentImage() override;
37 void changeCurrentIndex(int index)
38 {
39 m_currentIndex = index % m_images.size();
40 }
41 UpdateResult* updateToCurrent(void* data, size_t size) override;
42 uint32_t imageCount() const
43 {
44 return m_imageCount;
45 }
46 std::vector<RHI::Image*> images() const { return m_images; }
47 std::vector<RHI::RenderTargetView*> rtvs() const { return m_rtvs; }
48 std::vector<RHI::DepthStencilView*> dsvs() const { return m_dsvs; }
49 std::vector<RHI::TextureView*> tvs() const { return m_tvs; }
50 size_t textureViewHash() const override;
51 private:
52 size_t m_imageCount = 0;
53 ImageUsages m_usage;
54 size_t m_currentIndex = 0;
55 std::vector<RHI::Image*> m_images;
56 std::vector<RHI::RenderTargetView*> m_rtvs;
57 std::vector<RHI::DepthStencilView*> m_dsvs;
58 std::vector<RHI::TextureView*> m_tvs;
59 };
60
61}
62
63
64#endif //MUTILBUFFERIMAGE_H
Image(Context *ctx)
int height() const
定义 Image.h:76
int width() const
定义 Image.h:75
MutilBufferAffterCreateImageBehavior(MutilBufferImage *image)
size_t textureViewHash() const override
std::vector< RHI::TextureView * > tvs() const
std::vector< RHI::RenderTargetView * > m_rtvs
std::vector< RHI::DepthStencilView * > m_dsvs
RHI::RenderTargetView * currentTargetView() override
void bind(Context *ctx) override
Image * getImage() const override
UpdateResult * updateToCurrent(void *data, size_t size) override
std::vector< Image * > getTargetImages() override
void as(ImageUsages usage) override
std::vector< RHI::RenderTargetView * > rtvs() const
std::vector< RHI::DepthStencilView * > dsvs() const
RHI::TextureView * currentTextureView() override
RHI::DepthStencilView * currentDepthStencilView() override
void imageCount(size_t count)
std::vector< RHI::Image * > m_images
std::vector< RHI::TextureView * > m_tvs
void resize(uint32_t width, uint32_t height)
RHI::Image * currentImage() override
std::vector< RHI::Image * > images() const
friend class MutilBufferAffterCreateImageBehavior