10
10
#include " nbl/asset/ICPUPolygonGeometry.h"
11
11
#include " nbl/asset/interchange/IAssetLoader.h"
12
12
#include " nbl/asset/interchange/IImageAssetHandlerBase.h"
13
+ #include " nbl/asset/utils/CGeometryManipulator.h"
13
14
14
15
15
16
namespace nbl ::asset
@@ -30,18 +31,25 @@ class IGeometryLoader : public IAssetLoader
30
31
)
31
32
{
32
33
const auto stride = getTexelOrBlockBytesize (format);
34
+ core::smart_refctd_ptr<ICPUBuffer> buffer;
33
35
if constexpr (AdoptMemory)
34
36
buffer = ICPUBuffer::create ({{stride*elementCount},const_cast <void *>(data),std::move (memoryResource),alignment},core::adopt_memory);
35
37
else
36
38
buffer = ICPUBuffer::create ({{stride*elementCount},const_cast <void *>(data),std::move (memoryResource),alignment});
37
- return {
39
+ IGeometry<ICPUBuffer>::SDataView retval = {
38
40
.composed = {
39
41
.stride = stride,
40
42
.format = format,
41
43
.rangeFormat = IGeometryBase::getMatchingAABBFormat (format)
42
44
},
43
45
.src = {.offset =0 ,.size =buffer->getSize (),.buffer =std::move (buffer)}
44
46
};
47
+ if (data)
48
+ {
49
+ CGeometryManipulator::recomputeContentHash (retval);
50
+ CGeometryManipulator::computeRange (retval);
51
+ }
52
+ return retval;
45
53
}
46
54
// creates a View from a mapped file
47
55
class CFileMemoryResource final : public core::refctd_memory_resource
@@ -77,7 +85,11 @@ class IGeometryLoader : public IAssetLoader
77
85
system::IFile::success_t success;
78
86
file->read (success,reinterpret_cast <uint8_t *>(view.src .buffer ->getPointer ())+view.src .offset ,offsetInFile,view.src .actualSize ());
79
87
if (success)
88
+ {
89
+ CGeometryManipulator::recomputeContentHash (view);
90
+ CGeometryManipulator::computeRange (view);
80
91
return view;
92
+ }
81
93
}
82
94
return {};
83
95
}
0 commit comments