172 lines
4.0 KiB
C++
172 lines
4.0 KiB
C++
#pragma once
|
|
|
|
/***********************************************************************************/
|
|
/** \file Renderjob.h
|
|
** \brief Header File zur Klasse Renderjob
|
|
*************************************************************************************
|
|
** Autor: Christian Roesch
|
|
*************************************************************************************
|
|
** _tut nichts_
|
|
**
|
|
*//*********************************************************************************/
|
|
|
|
#ifndef _Renderjob_H
|
|
#define _Renderjob_H
|
|
|
|
// includes
|
|
#include <d3dx9.h>
|
|
|
|
#include <cassert>
|
|
|
|
// 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
|
|
************************************************************************************/
|