aboutsummaryrefslogtreecommitdiffstats
path: root/yage/core/spritebatch.h
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2017-12-25 13:54:09 +0000
committerYann Herklotz <ymherklotz@gmail.com>2017-12-25 13:54:09 +0000
commitf949692714e72a0e2d45ebb6a5d698424ab71dee (patch)
treecfab638d8c4d35c297e981773cfee1a9af3490ee /yage/core/spritebatch.h
parent022a4bdd81332ce67d799be6a06afb42ae45ac2e (diff)
downloadYAGE-f949692714e72a0e2d45ebb6a5d698424ab71dee.tar.gz
YAGE-f949692714e72a0e2d45ebb6a5d698424ab71dee.zip
[Broken] Reorganising and fixing.
Diffstat (limited to 'yage/core/spritebatch.h')
-rw-r--r--yage/core/spritebatch.h110
1 files changed, 0 insertions, 110 deletions
diff --git a/yage/core/spritebatch.h b/yage/core/spritebatch.h
deleted file mode 100644
index c16b44f6..00000000
--- a/yage/core/spritebatch.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/** ---------------------------------------------------------------------------
- * @file: spritebatch.h
- *
- * Copyright (c) 2017 Yann Herklotz Grave <ymherklotz@gmail.com>
- * MIT License, see LICENSE file for more details.
- * ----------------------------------------------------------------------------
- */
-
-/** @file
- */
-
-#ifndef YAGE_SPRITE_BATCH_H
-#define YAGE_SPRITE_BATCH_H
-
-#include "vertex.h"
-
-#include <glad/glad.h>
-#include <glm/glm.hpp>
-#include <yage/math/matrix.h>
-
-#include <vector>
-
-namespace yage
-{
-
-class SpriteBatch;
-
-/** Glyph with information of the texture.
- */
-class Glyph
-{
-private:
- GLuint texture_;
- float depth_;
- Vertex top_left_;
- Vertex top_right_;
- Vertex bottom_right_;
- Vertex bottom_left_;
-
-public:
- Glyph(GLuint texture, float depth, const Vertex &top_left,
- const Vertex &top_right, const Vertex &bottom_right,
- const Vertex &bottom_left);
-
- GLuint texture() const { return texture_; }
- float depth() const { return depth_; }
- Vertex top_left() const { return top_left_; }
- Vertex top_right() const { return top_right_; }
- Vertex bottom_right() const { return bottom_right_; }
- Vertex bottom_left() const { return bottom_left_; }
-};
-
-class RenderBatch
-{
- friend SpriteBatch;
-
-private:
- GLsizei num_vertices_;
- GLint offset_;
- GLuint texture_;
-
-public:
- RenderBatch(GLint offset, GLsizei num_vertices, GLuint texture);
-
- GLint offset() const { return offset_; }
- GLsizei num_vertices() const { return num_vertices_; }
- GLuint texture() const { return texture_; }
-};
-
-class SpriteBatch
-{
-public:
- static const int NUM_VERTICES = 6;
-
-private:
- GLuint vbo_ = 0;
- GLuint vao_ = 0;
- std::vector<Glyph> glyphs_;
- std::vector<Glyph *> glyph_ptrs_;
- std::vector<RenderBatch> render_batches_;
-
-public:
- SpriteBatch();
- SpriteBatch(const SpriteBatch &) = delete;
- SpriteBatch(SpriteBatch &&) = delete;
- ~SpriteBatch();
-
- SpriteBatch &operator=(const SpriteBatch &) = delete;
- SpriteBatch &operator=(SpriteBatch &&) = delete;
-
- // initialize vaos and vbos
- void begin();
- void end();
-
- // adds a sprite to the sprite batch to be rendered later
- void draw(const yage::Vector4f &destination_rect,
- const yage::Vector4f &uv_rect, GLuint texture,
- const Colour &colour, float depth);
- // render the batch
- void render();
-
-private:
- void createVertexArray();
- void createRenderBatches();
- void sortGlyphs();
-};
-
-} // namespace yage
-
-#endif