mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-11-08 18:50:34 +01:00
feat(render): a geometry chunk emptied in place, the kind of its primitive told; a chunk gaining or losing its userdata gets a new buffer
Erase() empties a chunk and keeps its handle to be filled again, for geometry made anew as it changes. Primitive() tells whether a chunk holds triangles or strips, -1 from a renderer which doesn't know. The VAO bank reused the buffer of a chunk of the same length even when the userdata came or went, the layout of the buffer differing then.
This commit is contained in:
@@ -2201,8 +2201,13 @@ bool opengl33_renderer::Append(gfx::vertex_array &Vertices, gfx::userdata_array
|
||||
return m_geometry.append(Vertices, Userdata, Geometry);
|
||||
}
|
||||
|
||||
void opengl33_renderer::Erase(gfx::geometry_handle const &Geometry)
|
||||
{
|
||||
m_geometry.erase(Geometry);
|
||||
}
|
||||
|
||||
// provides direct access to index data of specfied chunk
|
||||
gfx::index_array const & opengl33_renderer::Indices(gfx::geometry_handle const &Geometry) const
|
||||
gfx::index_array const & opengl33_renderer::Indices(gfx::geometry_handle const &Geometry) const
|
||||
{
|
||||
return m_geometry.indices(Geometry);
|
||||
}
|
||||
@@ -2218,6 +2223,11 @@ gfx::userdata_array const &opengl33_renderer::UserData(const gfx::geometry_handl
|
||||
return m_geometry.userdata(Geometry);
|
||||
}
|
||||
|
||||
int opengl33_renderer::Primitive(gfx::geometry_handle const &Geometry) const
|
||||
{
|
||||
return static_cast<int>(m_geometry.primitive(Geometry));
|
||||
}
|
||||
|
||||
// material methods
|
||||
material_handle opengl33_renderer::Fetch_Material(std::string const &Filename, bool const Loadnow)
|
||||
{
|
||||
@@ -2225,6 +2235,18 @@ material_handle opengl33_renderer::Fetch_Material(std::string const &Filename, b
|
||||
return m_materials.create(Filename, Loadnow);
|
||||
}
|
||||
|
||||
material_handle opengl33_renderer::Matte_Material(material_handle const Material)
|
||||
{
|
||||
|
||||
return m_materials.create_matte(Material);
|
||||
}
|
||||
|
||||
material_handle opengl33_renderer::Tinted_Material(material_handle const Material, glm::vec3 const &Colour)
|
||||
{
|
||||
|
||||
return m_materials.create_tinted(Material, Colour);
|
||||
}
|
||||
|
||||
std::shared_ptr<gl::program> opengl33_renderer::Fetch_Shader(const std::string &name)
|
||||
{
|
||||
auto it = m_shaders.find(name);
|
||||
|
||||
Reference in New Issue
Block a user