#pragma once #include "RenderingRun.h" /** @brief Base abstract class __declspec( dllexport ) that defines a rendering process of a particle system impostor image. This impostor can be used as a texture for ither particle systems. This rendering method is called hieararchical particle system. */ class __declspec( dllexport ) ChildPsystemRenderingRun : virtual public RenderingRun { public: /** @brief Constructor. @param resolution the resolution of the impostor image @param perspectiveRendering sets if the impostor should be rendered with a perspective projection or orthogonal @param startFrame adds an offset to the current frame number to help evenly distribute updates between frames @param updateInterval update frequency */ ChildPsystemRenderingRun( unsigned int resolution, bool perspectiveRendering, unsigned long startFrame, unsigned long updateInterval) :RenderingRun(startFrame, updateInterval) { this->resolution = resolution; this->perspectiveRendering = perspectiveRendering; } virtual ~ChildPsystemRenderingRun(){} protected: /** @brief the resolution of the impostor image */ unsigned int resolution; /** @brief sets if the impostor should be rendered with a perspective projection or orthogonal */ bool perspectiveRendering; //inherited virtual void updateFrame(unsigned long frameNum) = 0; /** @brief Creates an impostor texture that can be used as a rendertarget during impostor rendering. */ virtual inline void createImpostorTexture() = 0; };