Files
2026-04-18 22:31:51 +02:00

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;
};