#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; class ObjMesh; class TerrainGrid; /***********************************************************************************/ /** \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; D3DXVECTOR3& Pos() { return *((D3DXVECTOR3*)&x); } D3DXVECTOR3& Normal() { return *((D3DXVECTOR3*)&nx); } }; static const DWORD c_dwFVF=D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_DIFFUSE|D3DFVF_TEX1; void DrawCall(); void Render(); void PreRender(); void RenderWater(bool bFlipped = false); void RenderWaterDepth(bool bFlipped = false); void RenderSky(bool bFlipped = false); void RenderSkyDepth(bool bFlipped = false); void Create( int iVertCount, int iIndexCount, bool bDynamic = false ); void Release(); void Lock(); void LockVertexOnly(); void Unlock(); void HideVertexData(); IDirect3DVertexBuffer9* GetVB(); IDirect3DIndexBuffer9* GetIB(); int GetVertCount(); int GetIndexCount(); 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 AddPlane( const D3DXVECTOR3& vecCenter, const D3DXVECTOR3& vecRot, DWORD dwColor, const D3DXVECTOR3& vecInnerExtent, const D3DXVECTOR3& vecOuterExtent); 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, DWORD dwColor ); void CreateTorus(); void CreateObjMesh( ObjMesh* pReader, DWORD dwColor ); void AddVertexColor( DWORD dwColor ); void SetTransformation( const D3DXMATRIX& mat); D3DXMATRIX GetTransformation(); TerrainGrid *m_pTerrain; // Terrain rendern 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 ************************************************************************************/