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
30
33 m_image = m_ctx->createResource<RHI::Image>();
34 m_image->width(m_width);
35 m_image->height(m_height);
36 m_image->format(m_format);
37 m_image->samples(m_samples);
38 m_image->initData(m_initData);
39 m_image->usage(m_usage);
40 m_image->create();
42 {
43 m_srv = m_ctx->createResource<RHI::TextureView>();
44 m_srv->image(m_image);
45 m_srv->create();
46 }
47 delete m_behavior;
49 }
50
53 m_image = image;
54 m_image->addRef();
55 m_width = image->width();
56 m_height = image->height();
57 delete m_behavior;
59 }
60
61 void SingleBufferImage::as(ImageUsages usage) {
62 if (usage & ImageUsage::RenderTarget && !m_rtv) {
63 m_rtv = m_ctx->createResource<RHI::RenderTargetView>();
64 m_rtv->image(m_image);
65 m_rtv->create();
66 }
67 m_usage |= usage;
68 }
69
71
72 }
73
74 void SingleBufferImage::resize(uint32_t width, uint32_t height)
75 {
76 if (m_width == width && m_height == height)
77 {
78 return;
79 }
80
81 Format currentFormat = m_format;
82 Samples currentSamples = m_samples;
83 ImageUsages currentUsage = m_usage;
84
86
87 if (m_rtv)
88 {
89 m_rtv->release();
90 m_rtv = nullptr;
91 }
92
93 if (m_srv)
94 {
95 m_srv->release();
96 m_srv = nullptr;
97 }
98
99 m_width = width;
101
102 m_image = m_ctx->createResource<RHI::Image>();
103 m_image->width(m_width);
104 m_image->height(m_height);
105 m_image->format(currentFormat);
106 m_image->samples(currentSamples);
107 m_image->usage(currentUsage);
108 m_image->create();
109
110 as(currentUsage);
111 }
112
114 if (m_rtv) {
115 return {this};
116 }
117 return {};
118 }
119
124
129
134
139
141 {
142 return reinterpret_cast<size_t>(m_srv);
143 }
144}
#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