SFML - Simple and Fast Multimedia Library

SFML 2.5.0

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

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::PrimitiveType
PrimitiveType
Types of primitives that a sf::VertexArray can render.
Definition: PrimitiveType.hpp:39
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::Color
Utility class for manipulating RGBA colors.
Definition: Color.hpp:40
sf::View
2D camera that defines what region is shown on screen
Definition: View.hpp:43
sf::BlendMode
Blending modes for drawing.
Definition: BlendMode.hpp:41
sf::VertexBuffer
Vertex buffer storage for one or more 2D primitives.
Definition: VertexBuffer.hpp:46
sf::Transform
Define a 3x3 transform matrix.
Definition: Transform.hpp:42
sf::Vertex
Define a point with color and texture coordinates.
Definition: Vertex.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::Drawable
Abstract base class for objects that can be drawn to a render target.
Definition: Drawable.hpp:44
sf::Rect< int >
sf
Definition: AlResource.hpp:34
sf::Vector2< float >
sf::Shader
Shader class (vertex, geometry and fragment)
Definition: Shader.hpp:52
sf::RenderStates::Default
static const RenderStates Default
Special instance holding the default render states.
Definition: RenderStates.hpp:110