51 lines
1.3 KiB
C++
51 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include "IEngine.h"
|
|
#include "IShader.h"
|
|
#include "ITexture.h"
|
|
#include "IRenderCommandNode.h"
|
|
#include "IResourceFactory.h"
|
|
#include "IPingPongBuffer.h"
|
|
|
|
|
|
class PingPongBuffer
|
|
: public IPingPongBuffer
|
|
{
|
|
public:
|
|
PingPongBuffer(IEngine& argEngine);
|
|
virtual ~PingPongBuffer();
|
|
|
|
virtual ITexture& get_InputTexture() const;
|
|
virtual void set_InputTexture(ITexture& argTexture);
|
|
|
|
virtual ITexture& get_OutputTexture() const;
|
|
|
|
virtual const PingPongBufferDescription& get_Descriptor() const;
|
|
virtual void set_Descriptor(const PingPongBufferDescription& argValue);
|
|
virtual IRenderCommandNode& get_RootNode() const;
|
|
virtual IRenderCommandNode& get_PreProcessNode() const;
|
|
|
|
protected:
|
|
void Rebuild(const PingPongBufferDescription& argValue);
|
|
|
|
private:
|
|
IEngine& m_Engine;
|
|
|
|
PingPongBufferDescription m_Descriptor;
|
|
|
|
ITexture* m_InputTexture;
|
|
|
|
IRenderCommandNode* m_RootNode;
|
|
IRenderCommandNode* m_PreProcessNode;
|
|
IRenderCommandNode* m_RenderTargetNodeA;
|
|
IRenderCommandNode* m_RenderTargetNodeB;
|
|
IShader* m_ShaderA;
|
|
IShader* m_ShaderB;
|
|
IShader* m_ShaderPreProcess;
|
|
IRenderTargetTexture* m_TextureA;
|
|
IRenderTargetTexture* m_TextureB;
|
|
IGeometryBuffer* m_ScreenQuad;
|
|
IShaderParameterCollection* m_ShaderParameterA;
|
|
IShaderParameterCollection* m_ShaderParameterB;
|
|
IShaderParameterCollection* m_ShaderParameterPreProcess;
|
|
}; |