FCT
载入中...
搜索中...
未找到
ResourceManager.h
浏览该文件的文档.
1//
2// Created by Administrator on 2025/7/28.
3//
4
5#ifndef RESOURCEMANAGER_H
6#define RESOURCEMANAGER_H
7#include "../ThirdParty.h"
8#include "ContextEvent.h"
10#include "Device.h"
11#include "FlowControl.h"
12#include "Format.h"
15namespace FCT
16{
17 class Image;
18 class MutilBufferImage;
20 class Context;
21 class Window;
22 namespace RHI
23 {
24 class Swapchain;
25 }
34 std::string WindowToToken(Window* wnd);
35 std::string SwapchainToToken(RHI::Swapchain* swapchain);
36 struct ImageDesc
37 {
40 ImageUsages usage;
41 };
43 {
44 int width;
45 int height;
48 ImageUsages usage;
49 };
51 {
52 ImageSaved(RHI::Swapchain* swapchain);
53 ImageSaved(ImageSaved* denpendency);
55 {
56 mutilBuffer = true;
57 autoIndex = true;
58 }
62 };
63
70 namespace InnerTicker
71 {
72 constexpr const char* ImageGraph_ChangeIndex = "ImageGraph_ChangeIndex";
73 }
75 public:
85 Image* allocateImage(std::string name,Window* dependency,ImageDesc desc);
94 Image* allocateImage(std::string name,std::string dependency,ImageDesc desc);
95 private:
96 /*todo: updateGraph 修改了 m_needChangeIndexImages 而 change index 发生在submit 线程
97 * 要是运行时 allocateImage怎么办?怎么做线程同步?
98 */
99 void updateGraph();
101 void registerWindow(Window* wnd);
102 void resizeSub(std::string token,int width, int height);
103 void resize(std::string token, int width, int height);
105 std::vector<std::string> m_target;
106 std::vector<ImageSaved> m_needChangeIndexImages;
110 public:
111 //todo:todo函数
120 void resizeImage(std::string name, int width, int height);
128 Image* allocateTarget(std::string name,TargetDesc desc);
129 };
130
131}
132
133
134
135#endif //RESOURCEMANAGER_H
void resizeSub(std::string token, int width, int height)
void resize(std::string token, int width, int height)
std::vector< std::string > m_target
TokenGraph< std::string, ImageSaved > m_dependencyGraph
void resizeImage(std::string name, int width, int height)
挂起resize一个image
Image * allocateTarget(std::string name, TargetDesc desc)
分配的是独立的Target,例如窗口一类的就算为独立Target
std::vector< ImageSaved > m_needChangeIndexImages
Image * allocateImage(std::string name, Window *dependency, ImageDesc desc)
分配中间Target / 图像
constexpr const char * ImageGraph_ChangeIndex
std::string WindowToToken(Window *wnd)
std::string SwapchainToToken(RHI::Swapchain *swapchain)
ImageSaved(RHI::Swapchain *swapchain)