#pragma once /***********************************************************************************/ /** \file Renderjob.h ** \brief Header File zur Klasse Renderjob ************************************************************************************* ** Autor: Christian Roesch ************************************************************************************* ** _tut nichts_ ** *//*********************************************************************************/ #ifndef _Renderjob_H #define _Renderjob_H // includes #include #include // Klassen-Deklaration extern IDirect3DDevice9* g_d3d_device; /***********************************************************************************/ /** \brief Renderjob _tut nichts_ ************************************************************************************* ** Genau genommen _tut dies nichts_ ** *//*********************************************************************************/ class Renderjob { public: static const int MaxRenderLayerCount = 8; void Init(); void InitFullScreenQuad(); void DeInit(); struct SVertex { FLOAT x, y, z; FLOAT nx, ny, nz; DWORD dwColor; FLOAT tu, tv; }; static const DWORD c_dwFVF=D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_DIFFUSE|D3DFVF_TEX1; void DrawCall(); void Render(); void PreRender(); void RenderSky(); void RenderSkyDepth(); void Create( int iVertCount, int iIndexCount, bool bDynamic = false ); void Release(); void Lock(); void LockVertexOnly(); void Unlock(); void HideVertexData(); int GetVertCount(); void AddVertex( const SVertex& v ); void AddIndex( WORD Index ); void AddTriangle( const D3DXVECTOR3& vec1, const D3DXVECTOR3& vec2, const D3DXVECTOR3& vec3, DWORD dwColor ); void AddQuadFlat( const D3DXVECTOR3& vec1, const D3DXVECTOR3& vec2, const D3DXVECTOR3& vec3, const D3DXVECTOR3& vec4, DWORD dwColor ); void AddQuadTex( const D3DXVECTOR3& vec1, const D3DXVECTOR3& vec2, const D3DXVECTOR3& vec3, const D3DXVECTOR3& vec4, float fTex[ 4 ], DWORD dwColor ); void AddCylinder( const D3DXVECTOR3& vecCenter, const D3DXVECTOR3& vecRot, float radius, float height, bool upperCap, bool lowerCap, DWORD dwColor); void AddGround( const D3DXVECTOR3& vecCenter, const D3DXVECTOR3& vecExtent, const D3DXVECTOR3& vecRot, DWORD dwColor, float fInnerRadius, float fOuterRadius, float fFrequency, float fAmplitude, int iResX, int iResY ); void AddBox( const D3DXVECTOR3& vecCenter, const D3DXVECTOR3& vecExtent, const D3DXVECTOR3& vecRot, DWORD dwColor ); void AddBox( const D3DXVECTOR3& vecCenter, const D3DXVECTOR3& vecExtent, const D3DXVECTOR3& vecRot, DWORD dwColor, float fTU, float fTV ); void AddRainbow( const D3DXVECTOR3& vecCenter, float fRadiusInner, float fRadiusOuter, float fWidth, float fStartAngle, float fEndAngle, const D3DXVECTOR3& vecRot ); void CreateTextMesh(const char* pcText ); void SetTransformation( const D3DXMATRIX& mat); int m_iUsedShader[MaxRenderLayerCount]; int m_iUsedPreShader; // -1 kein Shader // -2 kein Prepass // 0 - n entsprechenden Shader fuer den Prepass bool m_bAlphaEnable[MaxRenderLayerCount]; D3DBLENDOP m_BlendOp[MaxRenderLayerCount]; D3DBLEND m_SrcBlend[MaxRenderLayerCount]; D3DBLEND m_DestBlend[MaxRenderLayerCount]; friend struct Flock; private: int m_iVertCount; IDirect3DVertexBuffer9* m_pVB; int m_iSafeVertMem; SVertex* m_pLockVertex; int m_iIndexCount; IDirect3DIndexBuffer9* m_pIB; int m_iSafeIndexMem; WORD* m_pLockIndex; bool m_bDynamic; ID3DXMesh* m_pMesh; D3DXMATRIX m_Transform; D3DXMATRIX m_TransformInverse; }; #endif//_Renderjob_H class Renderjob; /************************************************************************************ ** Ende der Datei: Renderjob.h ************************************************************************************/