Make gfx::load_mesh return data instead of loading mesh directly
This commit is contained in:
parent
6e49551045
commit
3e4cea25e7
2 changed files with 8 additions and 5 deletions
|
|
@ -12,6 +12,7 @@
|
|||
#include <psemek/geom/matrix.hpp>
|
||||
|
||||
#include <psemek/util/assert.hpp>
|
||||
#include <psemek/util/span.hpp>
|
||||
|
||||
#include <cstddef>
|
||||
#include <type_traits>
|
||||
|
|
@ -336,6 +337,6 @@ namespace psemek::gfx
|
|||
load_instance(instances.data(), instances.size(), usage);
|
||||
}
|
||||
|
||||
void load_mesh(mesh & m, std::string_view data);
|
||||
std::tuple<attribs_description, util::span<char const>, util::span<std::uint32_t const>> load_mesh(std::string_view data);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -198,7 +198,7 @@ namespace psemek::gfx
|
|||
}
|
||||
}
|
||||
|
||||
void load_mesh(mesh & m, std::string_view data)
|
||||
std::tuple<attribs_description, util::span<char const>, util::span<std::uint32_t const>> load_mesh(std::string_view data)
|
||||
{
|
||||
// These should be in sync with convert-mesh.py
|
||||
static std::uint32_t const POSITION_MASK = 1;
|
||||
|
|
@ -227,10 +227,12 @@ namespace psemek::gfx
|
|||
auto vertex_ptr = s.read_raw(vertex_count * attrs.vertex_size);
|
||||
|
||||
auto index_count = s.read<std::uint32_t>();
|
||||
auto index_ptr = s.read_raw(index_count * sizeof(std::uint32_t));
|
||||
auto index_ptr = reinterpret_cast<std::uint32_t const *>(s.read_raw(index_count * sizeof(std::uint32_t)));
|
||||
|
||||
m.setup(attrs);
|
||||
m.load_raw(vertex_ptr, attrs.vertex_size, vertex_count, index_ptr, gl::UNSIGNED_INT, index_count, gl::TRIANGLES, gl::STATIC_DRAW);
|
||||
util::span<char const> vertices{vertex_ptr, vertex_ptr + vertex_count * attrs.vertex_size};
|
||||
util::span<std::uint32_t const> indices{index_ptr, index_ptr + index_count};
|
||||
|
||||
return {attrs, vertices, indices};
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue