1
1
forked from 0ad/0ad
0ad/source/renderer/HWLightingModelRenderer.h
prefect 0346ba1b18 Refactor model rendering to perform vertex setup in ModelVertexRenderer.
Sort all transparent models by distance to camera (however, do not sort
polygons by default).

This was SVN commit r3096.
2005-11-05 23:15:23 +00:00

60 lines
1.7 KiB
C++

/**
* =========================================================================
* File : HWLightingModelRenderer.h
* Project : Pyrogenesis
* Description : ModelVertexRenderer that transforms models on the CPU
* : but performs lighting in a vertex shader.
*
* @author Nicolai Hähnle <nicolai@wildfiregames.com>
* =========================================================================
*/
#ifndef HWLIGHTINGMODELRENDERER_H
#define HWLIGHTINGMODELRENDERER_H
#include "renderer/ModelVertexRenderer.h"
struct HWLightingModelRendererInternals;
/**
* Class HWLightingModelRenderer: Render animated models using vertex
* shaders for lighting.
*
* @note You should verify hardware capabilities using IsAvailable
* before creating this model renderer.
*/
class HWLightingModelRenderer : public ModelVertexRenderer
{
public:
HWLightingModelRenderer();
~HWLightingModelRenderer();
// Implementations
void* CreateModelData(CModel* model);
void UpdateModelData(CModel* model, void* data, u32 updateflags);
void DestroyModelData(CModel* model, void* data);
void BeginPass(uint streamflags);
void EndPass(uint streamflags);
void PrepareModelDef(uint streamflags, CModelDefPtr def);
void RenderModel(uint streamflags, CModel* model, void* data);
/**
* IsAvailable: Determines whether this model renderer can be used
* given the OpenGL implementation specific limits.
*
* @note Do not attempt to construct a HWLightingModelRenderer object
* when IsAvailable returns false.
*
* @return true if the OpenGL implementation can support this
* model renderer.
*/
static bool IsAvailable();
private:
HWLightingModelRendererInternals* m;
};
#endif // HWLIGHTINGMODELRENDERER_H