mirror of
https://github.com/brunoherbelin/vimix.git
synced 2025-12-12 18:59:59 +01:00
Unified implementation of filters for CloneSources
All filters now derive from FrameBufferFilter, which is always used in a CloneSource. Default FrameBufferFilter is Passthrough filter. Others are Delay and Image filters. Implemented UI selection of filter type, XML session save and load. Linked ImageFilter to Code editor.
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
#ifndef DELAYFILTER_H
|
||||
#define DELAYFILTER_H
|
||||
|
||||
#include <queue>
|
||||
#include <glm/glm.hpp>
|
||||
|
||||
#include "FrameBufferFilter.h"
|
||||
|
||||
class Surface;
|
||||
class FrameBuffer;
|
||||
|
||||
class DelayFilter : public FrameBufferFilter
|
||||
{
|
||||
public:
|
||||
DelayFilter();
|
||||
~DelayFilter();
|
||||
|
||||
// delay property
|
||||
inline void setDelay(double second) { delay_ = second; }
|
||||
inline double delay() const { return delay_; }
|
||||
|
||||
// implementation of FrameBufferFilter
|
||||
Type type() const { return FrameBufferFilter::FILTER_DELAY; }
|
||||
uint texture () const override;
|
||||
glm::vec3 resolution () const override;
|
||||
void update (float dt) override;
|
||||
void draw (FrameBuffer *input) override;
|
||||
void accept (Visitor& v) override;
|
||||
|
||||
private:
|
||||
// queue of frames
|
||||
std::queue<FrameBuffer *> frames_;
|
||||
std::queue<double> elapsed_;
|
||||
|
||||
// render management
|
||||
FrameBuffer *temp_frame_;
|
||||
|
||||
// time management
|
||||
double now_;
|
||||
double delay_;
|
||||
};
|
||||
|
||||
#endif // DELAYFILTER_H
|
||||
|
||||
Reference in New Issue
Block a user