FCT
载入中...
搜索中...
未找到
SingleBufferImage.cpp
浏览该文件的文档.
1//
2// Created by Administrator on 2025/3/30.
3//
4
5#include "../headers.h"
6
7namespace FCT
8{
12
14 return static_cast<SingleBufferImage*>(m_image)->m_image->format();
15 }
16
18 return static_cast<SingleBufferImage*>(m_image)->m_image->samples();
19 }
20
23 m_srv = nullptr;
24 }
25
31
34 m_image = m_ctx->createResource<RHI::Image>();
35 m_image->width(m_width);
36 m_image->height(m_height);
37 m_image->format(m_format);
38 m_image->samples(m_samples);
39 m_image->initData(m_initData);
40 m_image->usage(m_usage);
41 m_image->create();
43 {
44 m_srv = m_ctx->createResource<RHI::TextureView>();
45 m_srv->image(m_image);
46 m_srv->create();
47 }
48 delete m_behavior;
50 }
51
54 m_image = image;
55 m_image->addRef();
56 m_width = image->width();
57 m_height = image->height();
58 delete m_behavior;
60 }
61
62 void SingleBufferImage::as(ImageUsages usage) {
63 if (usage & ImageUsage::RenderTarget && !m_rtv) {
64 m_rtv = m_ctx->createResource<RHI::RenderTargetView>();
65 m_rtv->image(m_image);
66 m_rtv->create();
67 }
68 m_usage |= usage;
69 }
70
72
73 }
74
75 void SingleBufferImage::resize(uint32_t width, uint32_t height)
76 {
77 if (m_width == width && m_height == height)
78 {
79 return;
80 }
81
82 Format currentFormat = m_format;
83 Samples currentSamples = m_samples;
84 ImageUsages currentUsage = m_usage;
85
87
88 if (m_rtv)
89 {
90 m_rtv->release();
91 m_rtv = nullptr;
92 }
93
94 if (m_srv)
95 {
96 m_srv->release();
97 m_srv = nullptr;
98 }
99
100 m_width = width;
102
103 m_image = m_ctx->createResource<RHI::Image>();
104 m_image->width(m_width);
105 m_image->height(m_height);
106 m_image->format(currentFormat);
107 m_image->samples(currentSamples);
108 m_image->usage(currentUsage);
109 m_image->create();
110
111 as(currentUsage);
112 }
113
115 if (m_rtv) {
116 return {this};
117 }
118 return {};
119 }
120
125
130
135
140
142 {
143 return reinterpret_cast<size_t>(m_srv);
144 }
145}
#define FCT_SAFE_RELEASE(obj)
ImageBehavior * m_behavior
定义 Image.h:87
Context * m_ctx
定义 Image.h:88
Image(Context *ctx)
Samples m_samples
定义 Image.h:92
friend class BeforeCreateImageBehavior
定义 Image.h:51
Format m_format
定义 Image.h:91
int height() const
定义 Image.h:76
int width() const
定义 Image.h:75
void width(uint32_t width)
定义 Image.h:41
void height(uint32_t height)
定义 Image.h:45
friend class SingleBufferAfterCreateImageBehavior
RHI::RenderTargetView * m_rtv
size_t textureViewHash() const override
std::vector< Image * > getTargetImages() override
RHI::TextureView * currentTextureView() override
RHI::Image * currentImage() override
RHI::DepthStencilView * currentDepthStencilView() override
void as(ImageUsages usage) override
RHI::RenderTargetView * currentTargetView() override
void bind(Context *ctx) override
void resize(uint32_t width, uint32_t height) override