@@ -70,7 +70,10 @@ namespace ENGINE
7070 imageShipper = GetShipperFromName (name);
7171 return imageShipper;
7272 }
73- imageShipper->BuildImage (core, arrayLayersCount, mipsCount, format, dstPattern);
73+ if (imageShipper->image == nullptr )
74+ {
75+ imageShipper->BuildImage (core, arrayLayersCount, mipsCount, format, dstPattern);
76+ }
7477 return imageShipper;
7578 }
7679
@@ -79,6 +82,13 @@ namespace ENGINE
7982 int mipLevelCount, int baseArrayLayer, int arrayLayerCount)
8083 {
8184 assert (core!= nullptr &&" core must be set" );
85+
86+ if (imagesNames.contains (name))
87+ {
88+ ImageView* imageViewRef = GetImageViewFromName (name);
89+ return imageViewRef;
90+ }
91+
8292 auto image = std::make_unique<
8393 Image>(core->physicalDevice , core->logicalDevice .get (), imageInfo);
8494 if (imageInfo.usage == vk::ImageUsageFlagBits::eStorage)
@@ -109,7 +119,10 @@ namespace ENGINE
109119 , void * data = nullptr )
110120 {
111121 assert (core!= nullptr &&" core must be set" );
112- assert (!bufferNames.contains (name) && " Buffer name already exist" );
122+ if (bufferNames.contains (name))
123+ {
124+ return GetBuffFromName (name);
125+ }
113126
114127 auto buffer = std::make_unique<Buffer>(
115128 core->physicalDevice , core->logicalDevice .get (), bufferUsageFlags, memPropertyFlags, deviceSize,
@@ -124,7 +137,10 @@ namespace ENGINE
124137 )
125138 {
126139 assert (core!= nullptr &&" core must be set" );
127- assert (!stagedBufferNames.contains (name) && " Buffer name already exist" );
140+ if (stagedBufferNames.contains (name))
141+ {
142+ return GetStagedBuffFromName (name);
143+ }
128144
129145 auto buffer = std::make_unique<StagedBuffer>(
130146 core->physicalDevice , core->logicalDevice .get (), bufferUsageFlags, deviceSize);
@@ -141,11 +157,6 @@ namespace ENGINE
141157 assert (core!= nullptr &&" core must be set" );
142158 assert (bufferNames.contains (name) && " Buffer dont exist" );
143159
144- auto buffer = std::make_unique<Buffer>(
145- core->physicalDevice , core->logicalDevice .get (), bufferUsageFlags, memPropertyFlags, deviceSize,
146- data);
147-
148-
149160 buffers.at (bufferNames.at (name)).reset (new Buffer (core->physicalDevice , core->logicalDevice .get (),
150161 bufferUsageFlags, memPropertyFlags, deviceSize, data));
151162 return buffers.at (bufferNames.at (name)).get ();
@@ -158,11 +169,9 @@ namespace ENGINE
158169 assert (core!= nullptr &&" core must be set" );
159170 assert (!stagedBufferNames.contains (name) && " staged buffer dont exist" );
160171
161- auto buffer = std::make_unique<StagedBuffer>(
162- core->physicalDevice , core->logicalDevice .get (), bufferUsageFlags, deviceSize);
163-
164172 stagedBuffers.at (stagedBufferNames.at (name)).reset (
165173 new StagedBuffer (core->physicalDevice , core->logicalDevice .get (), bufferUsageFlags, deviceSize));
174+
166175 return stagedBuffers.at (stagedBufferNames.at (name)).get ();
167176 }
168177
0 commit comments