From 542bc1c103f129c2f648dbe77affb485cfdf93ab Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Sun, 9 Oct 2022 02:21:01 +0200 Subject: a --- src/wireframe-mesh.hpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'src/wireframe-mesh.hpp') diff --git a/src/wireframe-mesh.hpp b/src/wireframe-mesh.hpp index 7a6892c2..2a7cf10c 100644 --- a/src/wireframe-mesh.hpp +++ b/src/wireframe-mesh.hpp @@ -1,6 +1,5 @@ #pragma once -#include "tile-atlas.hpp" #include "tile-defs.hpp" #include #include @@ -20,16 +19,19 @@ namespace wireframe template concept traits = requires (const T& x) { {T::num_vertices} -> std::convertible_to; + {T::num_indexes} -> std::convertible_to; {x.primitive} -> std::convertible_to; {x.make_vertex_array() } -> std::same_as>; + {x.make_index_array() } -> std::same_as>; }; struct null final { static constexpr auto primitive = GL::MeshPrimitive::Triangles; - static constexpr std::size_t num_vertices = 0; + static constexpr std::size_t num_vertices = 0, num_indexes = 0; static GL::RectangleTexture make_constant_texture(); static std::array make_vertex_array() { return {}; } + static std::array make_index_array() { return {}; } }; struct quad final @@ -37,11 +39,14 @@ struct quad final quad(Vector3 center, Vector2 size); constexpr quad() = default; - static constexpr std::size_t num_vertices = 4; - static constexpr GL::MeshPrimitive primitive = GL::MeshPrimitive::LineLoop; + static constexpr std::size_t num_vertices = 4, num_indexes = 6; + static constexpr GL::MeshPrimitive primitive = GL::MeshPrimitive::Triangles; using vertex_array = std::array; + using index_array = std::array; + vertex_array make_vertex_array() const; + static index_array make_index_array() ; private: Vector3 center = {}; @@ -57,7 +62,9 @@ struct wireframe_mesh final void draw(tile_shader& shader, T traits); private: - GL::Buffer _vertex_buffer{std::array{}}, _texcoords_buffer{std::array{}}; + GL::Buffer _vertex_buffer{std::array{}, GL::BufferUsage::DynamicDraw}, + _texcoords_buffer{std::array{}, GL::BufferUsage::DynamicDraw}, + _index_buffer{std::array{}, GL::BufferUsage::DynamicDraw}; GL::RectangleTexture _texture = wireframe::null::make_constant_texture(); GL::Mesh _mesh; }; -- cgit v1.2.3