| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- #pragma once
- //##########################################################################
- //# #
- //# CCFBO #
- //# #
- //# This program is free software; you can redistribute it and/or modify #
- //# it under the terms of the GNU Library General Public License as #
- //# published by the Free Software Foundation; version 2 or later of the License. #
- //# #
- //# This program is distributed in the hope that it will be useful, #
- //# but WITHOUT ANY WARRANTY; without even the implied warranty of #
- //# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
- //# GNU General Public License for more details. #
- //# #
- //# COPYRIGHT: EDF R&D / TELECOM ParisTech (ENST-TSI) #
- //# #
- //##########################################################################
- #include "CCFbo.h"
- //Qt
- #include <QString>
- //! Default GL filter interface
- /** A GL filter is a combination of shaders applied to
- textures (typically the rendered scene), typically
- through intensive use of Frame Buffer Objects.
- **/
- class CCFBO_LIB_API ccGlFilter
- {
- public:
- //! Default constructor
- ccGlFilter(QString description)
- : m_isValid(false)
- , m_description(description)
- {}
- //! Default destructor
- virtual ~ccGlFilter() {}
- //! Returns filter name
- inline virtual QString getDescription() const { return m_description; }
- //! Cloning mechanism
- virtual ccGlFilter* clone() const = 0;
- //! Initializes GL filter
- /** Must support reinit!
- \param width texture/screen width
- \param height texture/screen height
- \param shadersPath path where shader files are stored
- \param error error string (if an error occurred)
- \return success
- **/
- virtual bool init( unsigned width,
- unsigned height,
- const QString& shadersPath,
- QString& error) = 0;
- //! Minimal set of 3D viewport parameters that can be used by shaders
- struct CCFBO_LIB_API ViewportParameters
- {
- //! Default constructor
- ViewportParameters()
- : perspectiveMode(false)
- , zNear(0.0)
- , zFar(1.0)
- , zoomFactor(1.0)
- {}
- //! Whether perspective mode is enabled or not
- bool perspectiveMode;
- //! Near clipping plane position
- double zNear;
- //! Far clipping plane position
- double zFar;
- //! Rendering zoom factor
- float zoomFactor;
- };
- //! Applies filter to texture (depth + color)
- virtual void shade( unsigned texDepth,
- unsigned texColor,
- ViewportParameters& parameters) = 0;
- //! Returns resulting texture
- virtual unsigned getTexture() = 0;
- protected: //methods
- //! Sets whether the filter is valid
- inline void setValid(bool state) { m_isValid = state; }
- //! Returns whether the filter is valid
- inline bool isValid() const { return m_isValid; }
- protected:
- //! Filter validity
- bool m_isValid;
- //! Filter description
- QString m_description;
- };
|