Gamedev Framework (gf)
1.2.0
A C++17 framework for 2D games
include
gf
RenderPipeline.h
1
/*
2
* Gamedev Framework (gf)
3
* Copyright (C) 2016-2022 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_RENDER_PIPELINE_H
22
#define GF_RENDER_PIPELINE_H
23
24
#include <vector>
25
26
#include "Effects.h"
27
#include "GraphicsApi.h"
28
#include "RenderTarget.h"
29
#include "Ref.h"
30
31
namespace
gf
{
32
#ifndef DOXYGEN_SHOULD_SKIP_THIS
33
inline
namespace
v1 {
34
#endif
35
36
class
Effect;
37
class
Window;
38
70
class
GF_GRAPHICS_API
RenderPipeline
:
public
RenderTarget
{
71
public
:
77
RenderPipeline
(
Window
& window);
78
84
void
addEffect
(
Effect
& effect);
85
89
void
clearEffects
();
90
111
void
resized
();
112
113
virtual
Vector2i
getSize
()
const override
;
114
118
void
display
();
119
120
protected
:
128
virtual
void
onFramebufferResize
(
Vector2i
size);
129
130
private
:
131
Window
& m_window;
132
133
struct
TextureBuffer {
134
Texture
texture;
135
GraphicsHandle<GraphicsTag::Framebuffer>
framebuffer;
136
};
137
138
TextureBuffer m_buffers[2];
139
int
m_current;
140
141
DefaultEffect
m_defaultEffect;
142
std::vector<Ref<Effect>> m_effects;
143
};
144
145
#ifndef DOXYGEN_SHOULD_SKIP_THIS
146
}
147
#endif
148
}
149
150
#endif
// GF_RENDER_PIPELINE_H
gf::DefaultEffect
Default effect.
Definition:
Effects.h:38
gf::Effect
A post-processing effect.
Definition:
Effect.h:38
gf::GraphicsHandle< GraphicsTag::Framebuffer >
gf::RenderPipeline
A render pipeline.
Definition:
RenderPipeline.h:70
gf::RenderPipeline::clearEffects
void clearEffects()
Clear the pipeline.
gf::RenderPipeline::onFramebufferResize
virtual void onFramebufferResize(Vector2i size)
Callback when the screen has just been resized.
gf::RenderPipeline::resized
void resized()
Update the size of the target.
gf::RenderPipeline::addEffect
void addEffect(Effect &effect)
Add an effect to the pipeline.
gf::RenderPipeline::getSize
virtual Vector2i getSize() const override
Return the size of the rendering region of the target.
gf::RenderPipeline::display
void display()
Apply the effects and display what has been rendered.
gf::RenderPipeline::RenderPipeline
RenderPipeline(Window &window)
Constructor.
gf::RenderTarget
Base class for all render targets (window, texture, ...)
Definition:
RenderTarget.h:102
gf::Texture
A texture for colored images.
Definition:
Texture.h:313
gf::Window
An OS window.
Definition:
Window.h:97
gf
The namespace for gf classes.
gf::Vector< int, 2 >
Generated by
1.9.4