Files
bluflame/evoke-64k/bp10/renderjob.h
2026-04-18 22:31:51 +02:00

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
************************************************************************************/