Geogram Version 1.9.6-rc
A programming library of geometric algorithms
Loading...
Searching...
No Matches
full_screen_effect.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2000-2022 Inria
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 *
8 * * Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above copyright notice,
11 * this list of conditions and the following disclaimer in the documentation
12 * and/or other materials provided with the distribution.
13 * * Neither the name of the ALICE Project-Team nor the names of its
14 * contributors may be used to endorse or promote products derived from this
15 * software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
21 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 * POSSIBILITY OF SUCH DAMAGE.
28 *
29 * Contact: Bruno Levy
30 *
31 * https://www.inria.fr/fr/bruno-levy
32 *
33 * Inria,
34 * Domaine de Voluceau,
35 * 78150 Le Chesnay - Rocquencourt
36 * FRANCE
37 *
38 */
39
40#ifndef H_OGF_RENDERER_CONTEXT_FULL_SCREEN_EFFECT_H
41#define H_OGF_RENDERER_CONTEXT_FULL_SCREEN_EFFECT_H
42
47
53namespace GEO {
54
64 public Counted, public GLSL::PseudoFileProvider {
65 public:
70
75
76
84 virtual double required_GLSL_version() const;
85
92 virtual void pre_render(index_t width, index_t height);
93
101 virtual void post_render();
102
109 virtual void update();
110
117 index_t width() const {
118 return width_;
119 }
120
127 index_t height() const {
128 return height_;
129 }
130
139 bool OK() const {
140 return OK_;
141 }
142
150 std::vector<GLSL::Source>& sources
151 );
152
160 std::vector<GLSL::Source>& sources
161 );
162
163 protected:
164
172 virtual void initialize(index_t w, index_t h);
173
181 virtual void resize(index_t w, index_t h);
182
187
188 private:
189 bool initialized_;
190 bool OK_;
191 index_t width_;
192 index_t height_;
193
194 protected:
195 FrameBufferObject draw_FBO_;
196 bool ES_profile_;
197 };
198
203
204}
205
206#endif
Utilities for manipulating GLSL shaders.
Base class for reference-counted objects.
Definition counted.h:71
An OpenGL frame buffer object.
Implementation of full screen effects.
virtual void get_fragment_shader_preamble_pseudo_file(std::vector< GLSL::Source > &sources)
Gets the content of the virtual file GLUP/current_profile/fragment_shader_preamble....
void reset_alpha()
Resets alpha plane to 1.0 (opaque)
bool OK() const
Tests whether this FullScreenEffect can be used.
FullScreenEffectImpl()
FullScreenEffectImpl constructor.
virtual void get_vertex_shader_preamble_pseudo_file(std::vector< GLSL::Source > &sources)
Gets the content of the virtual file GLUP/current_profile/vertex_shader_preamble.h.
index_t width() const
Gets the width of the rendering context.
~FullScreenEffectImpl() override
FullScreenEffectImpl destructor.
index_t height() const
Gets the height of the rendering context.
virtual double required_GLSL_version() const
Gets the minimum required GLSL version needed to execute the shaders in this FullScreenEffectImpl.
virtual void resize(index_t w, index_t h)
Callback called whenever the rendering context is resized.
virtual void pre_render(index_t width, index_t height)
Callback called at the beginning of each frame.
virtual void update()
Callback called whenever parameters are changed in the GUI.
virtual void initialize(index_t w, index_t h)
Callback called the first time this FullScreenEffectImpl is used.
virtual void post_render()
Callback called at the end of each frame.
A class that can register functions to the GLSL pseudo file system.
Definition GLSL.h:175
A smart pointer with reference-counted copy semantics.
Base class of reference-counted objects, to be used with smart pointers.
Helper class for manipulating OpenGL frame buffer objects.
#define GEOGRAM_GFX_API
Linkage declaration for geogram symbols.
Definition defs.h:55
Common include file, providing basic definitions. Should be included before anything else by all head...
Global Vorpaline namespace.
Definition basic.h:55
SmartPointer< FullScreenEffectImpl > FullScreenEffectImpl_var
An automatic reference-counted pointer to a FullScreenEffectImpl.
geo_index_t index_t
The type for storing and manipulating indices.
Definition numeric.h:329