#pragma once #include #include #include "NodeFilter.h" #include "Vector.h" class Scene; class Renderer; //Größe des Arrays #define SIZEOFCMD 3 class RenderPass { public: RenderPass(void); ~RenderPass(void); void setRenderer(Renderer* _renderer); void setSafeAndRestoreRenderTarget(bool _safeRenderTarget); void setRenderTarget(LPDIRECT3DSURFACE9 _renderTarget); void setDepthStencilSurface(LPDIRECT3DSURFACE9 _depthStencilSurface); void setViewMatrix(D3DXMATRIX &_viewMat); void setProjectionMatrix(D3DXMATRIX &_projMat); void setScene(Scene &_scene); static const int CMD_CLEARRENDERTARGETANDZBUFFER = 0; static const int CMD_DOFRUSTUMCULLING = 1; static const int CMD_RENDERNODES = 2; void execute(int command, bool _execute=true); void executePass(); D3DXMATRIX* getViewMatrix(); D3DXMATRIX* getProjectionMatrix(); D3DXMATRIX* getViewProjectionMatrix(); D3DXMATRIX getWorldViewMatrix(D3DXMATRIX *worldMat); D3DXMATRIX getWorldViewProjectionMatrix(D3DXMATRIX *worldMat); void setRenderPassId(int _passId); int getRenderPassId(); void useThisRendererList(std::vector* _otherList); void calculateMatrices(); std::vector* usedRendererList; LPDIRECT3DSURFACE9 renderTarget; protected: std::vector myRendererList; Scene* scene; Renderer* renderer; IDirect3DDevice9* device; bool safeRenderTarget; LPDIRECT3DSURFACE9 renderTargetSurfaceOld; LPDIRECT3DSURFACE9 depthStencilSurfaceOld; LPDIRECT3DSURFACE9 dephStencilSurface; D3DXMATRIX viewMat; D3DXMATRIX projMat; D3DXMATRIX viewProjMat; bool executeCommand[SIZEOFCMD]; int renderPassId; };