From 94f6748d5f5b9fdc3047022fe59d66028bde63f3 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Sun, 9 Oct 2022 05:06:41 +0200 Subject: a --- draw/wireframe-mesh.cpp | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 draw/wireframe-mesh.cpp (limited to 'draw/wireframe-mesh.cpp') diff --git a/draw/wireframe-mesh.cpp b/draw/wireframe-mesh.cpp new file mode 100644 index 00000000..1425df60 --- /dev/null +++ b/draw/wireframe-mesh.cpp @@ -0,0 +1,47 @@ +#include "wireframe-mesh.hpp" +#include "shaders/tile-shader.hpp" +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Magnum::Examples::wireframe +{ + +GL::RectangleTexture mesh_base::make_constant_texture() +{ + const Vector4ub data[] = { {255, 255, 255, 255} }; + Trade::ImageData2D img{PixelStorage{}.setImageHeight(1).setRowLength(1).setAlignment(1), + PixelFormat::RGBA8Unorm, {1, 1}, {}, + Containers::arrayView(data, 1), {}, {}}; + GL::RectangleTexture tex; + tex.setWrapping(GL::SamplerWrapping::ClampToEdge) + .setMagnificationFilter(GL::SamplerFilter::Nearest) + .setMinificationFilter(GL::SamplerFilter::Nearest) + .setMaxAnisotropy(1) + .setStorage(GL::textureFormat(img.format()), img.size()) + .setSubImage({}, std::move(img)); + return tex; +} + +mesh_base::mesh_base(GL::MeshPrimitive primitive, std::size_t num_vertices) : + _texcoords_buffer{std::vector{num_vertices}} +{ + _mesh.setCount((int)num_vertices) + .setPrimitive(primitive) + .addVertexBuffer(_vertex_buffer, 0, tile_shader::Position{}) + .addVertexBuffer(_texcoords_buffer, 0, tile_shader::TextureCoordinates{}); +} + +void mesh_base::draw(tile_shader& shader) +{ + _texture.bind(0); + shader.draw(_mesh); +} + + +} // namespace Magnum::Examples::wireframe -- cgit v1.2.3