SFML 2.5.1
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
include
SFML
Graphics
RenderTarget.hpp
1
//
3
// SFML - Simple and Fast Multimedia Library
4
// Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5
//
6
// This software is provided 'as-is', without any express or implied warranty.
7
// In no event will the authors be held liable for any damages 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 freely,
11
// subject to the following restrictions:
12
//
13
// 1. The origin of this software must not be misrepresented;
14
// you must not claim that you wrote the original software.
15
// If you use this software in a product, an acknowledgment
16
// in the product documentation would be appreciated but is not required.
17
//
18
// 2. Altered source versions must be plainly marked as such,
19
// and must not be misrepresented as being the original software.
20
//
21
// 3. This notice may not be removed or altered from any source distribution.
22
//
24
25
#ifndef SFML_RENDERTARGET_HPP
26
#define SFML_RENDERTARGET_HPP
27
29
// Headers
31
#include <SFML/Graphics/Export.hpp>
32
#include <SFML/Graphics/Color.hpp>
33
#include <SFML/Graphics/Rect.hpp>
34
#include <SFML/Graphics/View.hpp>
35
#include <SFML/Graphics/Transform.hpp>
36
#include <SFML/Graphics/BlendMode.hpp>
37
#include <SFML/Graphics/RenderStates.hpp>
38
#include <SFML/Graphics/PrimitiveType.hpp>
39
#include <SFML/Graphics/Vertex.hpp>
40
#include <SFML/System/NonCopyable.hpp>
41
42
43
namespace
sf
44
{
45
class
Drawable;
46
class
VertexBuffer;
47
52
class
SFML_GRAPHICS_API
RenderTarget
:
NonCopyable
53
{
54
public
:
55
60
virtual
~
RenderTarget
();
61
71
void
clear(
const
Color
& color =
Color
(0, 0, 0, 255));
72
92
void
setView(
const
View
& view);
93
102
const
View
& getView()
const
;
103
115
const
View
& getDefaultView()
const
;
116
130
IntRect
getViewport(
const
View
& view)
const
;
131
150
Vector2f
mapPixelToCoords(
const
Vector2i
& point)
const
;
151
181
Vector2f
mapPixelToCoords(
const
Vector2i
& point,
const
View
& view)
const
;
182
201
Vector2i
mapCoordsToPixel(
const
Vector2f
& point)
const
;
202
228
Vector2i
mapCoordsToPixel(
const
Vector2f
& point,
const
View
& view)
const
;
229
237
void
draw(
const
Drawable
& drawable,
const
RenderStates
& states =
RenderStates::Default
);
238
248
void
draw(
const
Vertex
* vertices, std::size_t vertexCount,
249
PrimitiveType
type,
const
RenderStates
& states =
RenderStates::Default
);
250
258
void
draw(
const
VertexBuffer
& vertexBuffer,
const
RenderStates
& states =
RenderStates::Default
);
259
269
void
draw(
const
VertexBuffer
& vertexBuffer, std::size_t firstVertex, std::size_t vertexCount,
const
RenderStates
& states =
RenderStates::Default
);
270
277
virtual
Vector2u
getSize()
const
= 0;
278
299
virtual
bool
setActive(
bool
active =
true
);
300
333
void
pushGLStates();
334
344
void
popGLStates();
345
367
void
resetGLStates();
368
369
protected
:
370
375
RenderTarget
();
376
384
void
initialize();
385
386
private
:
387
392
void
applyCurrentView();
393
400
void
applyBlendMode(
const
BlendMode
& mode);
401
408
void
applyTransform(
const
Transform
& transform);
409
416
void
applyTexture(
const
Texture
* texture);
417
424
void
applyShader(
const
Shader
* shader);
425
433
void
setupDraw(
bool
useVertexCache,
const
RenderStates
& states);
434
443
void
drawPrimitives(
PrimitiveType
type, std::size_t firstVertex, std::size_t vertexCount);
444
451
void
cleanupDraw(
const
RenderStates
& states);
452
457
struct
StatesCache
458
{
459
enum
{VertexCacheSize = 4};
460
461
bool
enable;
462
bool
glStatesSet;
463
bool
viewChanged;
464
BlendMode
lastBlendMode;
465
Uint64 lastTextureId;
466
bool
texCoordsArrayEnabled;
467
bool
useVertexCache;
468
Vertex
vertexCache[VertexCacheSize];
469
};
470
472
// Member data
474
View
m_defaultView;
475
View
m_view;
476
StatesCache m_cache;
477
Uint64 m_id;
478
};
479
480
}
// namespace sf
481
482
483
#endif // SFML_RENDERTARGET_HPP
484
485
sf::Color
Utility class for manipulating RGBA colors.
Definition:
Color.hpp:40
sf::RenderStates::Default
static const RenderStates Default
Special instance holding the default render states.
Definition:
RenderStates.hpp:110
sf::View
2D camera that defines what region is shown on screen
Definition:
View.hpp:43
sf::VertexBuffer
Vertex buffer storage for one or more 2D primitives.
Definition:
VertexBuffer.hpp:46
sf::BlendMode
Blending modes for drawing.
Definition:
BlendMode.hpp:41
sf::Drawable
Abstract base class for objects that can be drawn to a render target.
Definition:
Drawable.hpp:44
sf::Texture
Image living on the graphics card that can be used for drawing.
Definition:
Texture.hpp:48
sf::RenderStates
Define the states used for drawing to a RenderTarget.
Definition:
RenderStates.hpp:45
sf::Rect< int >
sf::Transform
Define a 3x3 transform matrix.
Definition:
Transform.hpp:42
sf::NonCopyable
Utility class that makes any derived class non-copyable.
Definition:
NonCopyable.hpp:41
sf::RenderTarget
Base class for all render targets (window, texture, ...)
Definition:
RenderTarget.hpp:52
sf::Vertex
Define a point with color and texture coordinates.
Definition:
Vertex.hpp:42
sf::Shader
Shader class (vertex, geometry and fragment)
Definition:
Shader.hpp:52
sf::Vector2< float >
sf::PrimitiveType
PrimitiveType
Types of primitives that a sf::VertexArray can render.
Definition:
PrimitiveType.hpp:39