Gamedev Framework (gf)
0.19.0
A C++17 framework for 2D games
include
gf
SpriteBatch.h
1
/*
2
* Gamedev Framework (gf)
3
* Copyright (C) 2016-2021 Julien Bernard
4
*
5
* This software is provided 'as-is', without any express or implied
6
* warranty. In no event will the authors be held liable for any damages
7
* arising from the use of this software.
8
*
9
* Permission is granted to anyone to use this software for any purpose,
10
* including commercial applications, and to alter it and redistribute it
11
* freely, subject to the following restrictions:
12
*
13
* 1. The origin of this software must not be misrepresented; you must not
14
* claim that you wrote the original software. If you use this software
15
* in a product, an acknowledgment in the product documentation would be
16
* appreciated but is not required.
17
* 2. Altered source versions must be plainly marked as such, and must not be
18
* misrepresented as being the original software.
19
* 3. This notice may not be removed or altered from any source distribution.
20
*/
21
#ifndef GF_SPRITE_BATCH_H
22
#define GF_SPRITE_BATCH_H
23
24
#include <cstddef>
25
#include <array>
26
27
#include "GraphicsApi.h"
28
#include "RenderStates.h"
29
#include "Vertex.h"
30
31
namespace
gf
{
32
#ifndef DOXYGEN_SHOULD_SKIP_THIS
33
inline
namespace
v1 {
34
#endif
35
36
class
RenderTarget;
37
class
Sprite;
38
class
Texture
;
39
62
class
GF_GRAPHICS_API
SpriteBatch
{
63
public
:
69
SpriteBatch
(
RenderTarget
& target);
70
74
void
begin();
75
85
void
draw(
Sprite
& sprite,
const
RenderStates
& states =
RenderStates
());
86
97
void
draw(
const
Texture
& texture,
Vector2f
position,
const
RenderStates
& states =
RenderStates
());
98
110
void
draw(
const
Texture
& texture,
const
RectF
& textureRect,
Vector2f
position,
const
RenderStates
& states =
RenderStates
());
111
115
void
end();
116
117
private
:
118
void
renderBatch();
119
120
private
:
121
static
constexpr std::size_t MaxSpriteCount = 1024;
122
static
constexpr std::size_t VerticesPerSprite = 6;
123
static
constexpr std::size_t MaxVertexCount = MaxSpriteCount * VerticesPerSprite;
124
125
RenderTarget
& m_target;
126
RenderStates
m_currentRenderStates;
127
std::size_t m_count;
128
std::array<Vertex, MaxVertexCount> m_vertices;
129
};
130
131
#ifndef DOXYGEN_SHOULD_SKIP_THIS
132
}
133
#endif
134
}
135
136
#endif // GF_SPRITE_BATCH_H
gf::SpriteBatch
A sprite batch.
Definition:
SpriteBatch.h:62
gf::RenderTarget
Base class for all render targets (window, texture, ...)
Definition:
RenderTarget.h:102
gf::RenderStates
Define the states used for drawing to a RenderTarget.
Definition:
RenderStates.h:82
gf::Sprite
A drawable representation of a texture, with its own transformations, color, etc. ...
Definition:
Sprite.h:75
gf::GraphicsTag::Texture
A GPU texture.
gf::Texture
A texture for colored images.
Definition:
Texture.h:313
gf::Rect< float >
gf
The namespace for gf classes.
Definition:
Action.h:35
gf::Vector
General purpose math vector.
Definition:
Vector.h:61
Generated by
1.8.13