Documentation of SFML 2.6.0

Warning: this page refers to an old version of SFML. Click here to switch to the latest version.
Loading...
Searching...
No Matches
RenderTarget.hpp
1
2//
3// SFML - Simple and Fast Multimedia Library
4// Copyright (C) 2007-2023 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
43namespace sf
44{
45class Drawable;
46class VertexBuffer;
47
52class SFML_GRAPHICS_API RenderTarget : NonCopyable
53{
54public:
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
285 virtual bool isSrgb() const;
286
307 virtual bool setActive(bool active = true);
308
342
353
376
377protected:
378
384
393
394private:
395
400 void applyCurrentView();
401
408 void applyBlendMode(const BlendMode& mode);
409
416 void applyTransform(const Transform& transform);
417
424 void applyTexture(const Texture* texture);
425
432 void applyShader(const Shader* shader);
433
441 void setupDraw(bool useVertexCache, const RenderStates& states);
442
451 void drawPrimitives(PrimitiveType type, std::size_t firstVertex, std::size_t vertexCount);
452
459 void cleanupDraw(const RenderStates& states);
460
465 struct StatesCache
466 {
467 enum {VertexCacheSize = 4};
468
469 bool enable;
470 bool glStatesSet;
471 bool viewChanged;
472 BlendMode lastBlendMode;
473 Uint64 lastTextureId;
474 bool texCoordsArrayEnabled;
475 bool useVertexCache;
476 Vertex vertexCache[VertexCacheSize];
477 };
478
480 // Member data
482 View m_defaultView;
483 View m_view;
484 StatesCache m_cache;
485 Uint64 m_id;
486};
487
488} // namespace sf
489
490
491#endif // SFML_RENDERTARGET_HPP
492
493
Utility class for manipulating RGBA colors.
Definition: Color.hpp:41
Abstract base class for objects that can be drawn to a render target.
Definition: Drawable.hpp:45
Utility class that makes any derived class non-copyable.
Definition: NonCopyable.hpp:42
Define the states used for drawing to a RenderTarget.
Base class for all render targets (window, texture, ...)
Vector2f mapPixelToCoords(const Vector2i &point) const
Convert a point from target coordinates to world coordinates, using the current view.
void setView(const View &view)
Change the current active view.
void draw(const VertexBuffer &vertexBuffer, std::size_t firstVertex, std::size_t vertexCount, const RenderStates &states=RenderStates::Default)
Draw primitives defined by a vertex buffer.
void draw(const Drawable &drawable, const RenderStates &states=RenderStates::Default)
Draw a drawable object to the render target.
RenderTarget()
Default constructor.
Vector2f mapPixelToCoords(const Vector2i &point, const View &view) const
Convert a point from target coordinates to world coordinates.
virtual Vector2u getSize() const =0
Return the size of the rendering region of the target.
void draw(const VertexBuffer &vertexBuffer, const RenderStates &states=RenderStates::Default)
Draw primitives defined by a vertex buffer.
void clear(const Color &color=Color(0, 0, 0, 255))
Clear the entire target with a single color.
const View & getDefaultView() const
Get the default view of the render target.
Vector2i mapCoordsToPixel(const Vector2f &point, const View &view) const
Convert a point from world coordinates to target coordinates.
IntRect getViewport(const View &view) const
Get the viewport of a view, applied to this render target.
void pushGLStates()
Save the current OpenGL render states and matrices.
void draw(const Vertex *vertices, std::size_t vertexCount, PrimitiveType type, const RenderStates &states=RenderStates::Default)
Draw primitives defined by an array of vertices.
virtual ~RenderTarget()
Destructor.
void resetGLStates()
Reset the internal OpenGL states so that the target is ready for drawing.
void popGLStates()
Restore the previously saved OpenGL render states and matrices.
Vector2i mapCoordsToPixel(const Vector2f &point) const
Convert a point from world coordinates to target coordinates, using the current view.
const View & getView() const
Get the view currently in use in the render target.
virtual bool setActive(bool active=true)
Activate or deactivate the render target for rendering.
virtual bool isSrgb() const
Tell if the render target will use sRGB encoding when drawing on it.
void initialize()
Performs the common initialization step after creation.
Shader class (vertex, geometry and fragment)
Definition: Shader.hpp:53
Image living on the graphics card that can be used for drawing.
Definition: Texture.hpp:49
Define a 3x3 transform matrix.
Definition: Transform.hpp:43
Vertex buffer storage for one or more 2D primitives.
Define a point with color and texture coordinates.
Definition: Vertex.hpp:43
2D camera that defines what region is shown on screen
Definition: View.hpp:44
PrimitiveType
Types of primitives that a sf::VertexArray can render.
Blending modes for drawing.
Definition: BlendMode.hpp:42