MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ create_mesh_buffers()

std::vector< std::shared_ptr< Buffers::MeshBuffer > > MayaFlux::IO::ModelReader::create_mesh_buffers ( const TextureResolver resolver = nullptr) const

Construct one MeshBuffer per mesh in the currently loaded scene.

Calls extract_meshes() internally. Returns empty if no scene is loaded. setup_processors() and setup_rendering() are left to the caller.

If resolver is provided, it is called with the raw diffuse path from each mesh's material. The returned VKImage is bound via bind_diffuse_texture(). Null resolver skips texture binding entirely.

Parameters
resolverOptional texture resolver.
Returns
One MeshBuffer per aiMesh in scene order.

Definition at line 114 of file ModelReader.cpp.

115{
116 auto meshes = extract_meshes();
117
118 std::vector<std::shared_ptr<Buffers::MeshBuffer>> result;
119 result.reserve(meshes.size());
120
121 for (auto& mesh_data : meshes) {
122 if (!mesh_data.is_valid()) {
124 "ModelReader::create_mesh_buffers: skipping invalid MeshData");
125 continue;
126 }
127
128 auto buf = std::make_shared<Buffers::MeshBuffer>(mesh_data);
129
130 if (resolver) {
131 const auto raw = get_diffuse_path(mesh_data);
132 if (!raw.empty()) {
133 auto image = resolver(raw);
134 if (image) {
135 buf->bind_diffuse_texture(image);
136 } else {
138 "ModelReader::create_mesh_buffers: resolver returned null for '{}'",
139 raw);
140 }
141 }
142 }
143
144 result.push_back(std::move(buf));
145 }
146
148 "ModelReader::create_mesh_buffers: created {}/{} MeshBuffers",
149 result.size(), meshes.size());
150
151 return result;
152}
#define MF_INFO(comp, ctx,...)
#define MF_ERROR(comp, ctx,...)
#define MF_WARN(comp, ctx,...)
IO::ImageData image
std::vector< Kakshya::MeshData > extract_meshes() const
Load all meshes after open() has already been called.
@ FileIO
Filesystem I/O operations.
@ IO
Networking, file handling, streaming.

References extract_meshes(), MayaFlux::Journal::FileIO, image, MayaFlux::Journal::IO, MF_ERROR, MF_INFO, and MF_WARN.

+ Here is the call graph for this function: