Pyrogenesis  trunk
Public Member Functions | List of all members
ModelVertexRenderer Class Referenceabstract

Class ModelVertexRenderer: Normal ModelRenderer implementations delegate vertex array management and vertex transformation to an implementation of ModelVertexRenderer. More...

#include <ModelVertexRenderer.h>

Inheritance diagram for ModelVertexRenderer:
Inheritance graph
[legend]

Public Member Functions

virtual ~ModelVertexRenderer ()
 
virtual CModelRDataCreateModelData (const void *key, CModel *model)=0
 CreateModelData: Create internal data for one model. More...
 
virtual void UpdateModelData (CModel *model, CModelRData *data, int updateflags)=0
 UpdateModelData: Calculate per-model data for each frame. More...
 
virtual void BeginPass (int streamflags)=0
 BeginPass: Setup global OpenGL state for this ModelVertexRenderer. More...
 
virtual void EndPass (int streamflags)=0
 EndPass: Cleanup OpenGL state set up by BeginPass. More...
 
virtual void PrepareModelDef (const CShaderProgramPtr &shader, int streamflags, const CModelDef &def)=0
 PrepareModelDef: Setup OpenGL state for rendering of models that use the given CModelDef object as base. More...
 
virtual void RenderModel (const CShaderProgramPtr &shader, int streamflags, CModel *model, CModelRData *data)=0
 RenderModel: Invoke the rendering commands for the given model. More...
 

Detailed Description

Class ModelVertexRenderer: Normal ModelRenderer implementations delegate vertex array management and vertex transformation to an implementation of ModelVertexRenderer.

ModelVertexRenderer implementations should be designed so that one instance of the implementation can be used with more than one ModelRenderer simultaneously.

Constructor & Destructor Documentation

virtual ModelVertexRenderer::~ModelVertexRenderer ( )
inlinevirtual

Member Function Documentation

virtual void ModelVertexRenderer::BeginPass ( int  streamflags)
pure virtual

BeginPass: Setup global OpenGL state for this ModelVertexRenderer.

ModelVertexRenderer implementations should prepare "heavy" OpenGL state such as vertex shader state to prepare for rendering models and delivering vertex data to the fragment stage as described by streamflags.

ModelRenderer implementations must call this function before any calls to other rendering related functions.

Recursive calls to BeginPass are not allowed, and every BeginPass is matched by a corresponding call to EndPass.

Parameters
streamflagsVertex streams required by the fragment stage.

Implemented in ShaderModelVertexRenderer, and InstancingModelRenderer.

virtual CModelRData* ModelVertexRenderer::CreateModelData ( const void *  key,
CModel model 
)
pure virtual

CreateModelData: Create internal data for one model.

ModelRenderer implementations must call this once for every model that will later be rendered, with key set to a value that's unique to that ModelRenderer.

ModelVertexRenderer implementations should use this function to create per-CModel and per-CModelDef data like vertex arrays.

Parameters
keyAn opaque pointer to pass to the CModelRData constructor
modelThe model.
Returns
A new CModelRData that will be passed into other ModelVertexRenderer functions whenever the same CModel is used again.

Implemented in ShaderModelVertexRenderer, and InstancingModelRenderer.

virtual void ModelVertexRenderer::EndPass ( int  streamflags)
pure virtual

EndPass: Cleanup OpenGL state set up by BeginPass.

ModelRenderer implementations must call this function after rendering related functions for one pass have been called.

Parameters
streamflagsVertex streams required by the fragment stage. This equals the streamflags parameter passed on the last call to BeginPass.

Implemented in ShaderModelVertexRenderer, and InstancingModelRenderer.

virtual void ModelVertexRenderer::PrepareModelDef ( const CShaderProgramPtr shader,
int  streamflags,
const CModelDef def 
)
pure virtual

PrepareModelDef: Setup OpenGL state for rendering of models that use the given CModelDef object as base.

ModelRenderer implementations must call this function before rendering a sequence of models based on the given CModelDef. When a ModelRenderer switches back and forth between CModelDefs, it must call PrepareModelDef for every switch.

Parameters
streamflagsVertex streams required by the fragment stage. This equals the streamflags parameter passed on the last call to BeginPass.
defThe model definition.

Implemented in ShaderModelVertexRenderer, and InstancingModelRenderer.

virtual void ModelVertexRenderer::RenderModel ( const CShaderProgramPtr shader,
int  streamflags,
CModel model,
CModelRData data 
)
pure virtual

RenderModel: Invoke the rendering commands for the given model.

ModelRenderer implementations must call this function to perform the actual rendering.

preconditions : The most recent call to PrepareModelDef since BeginPass has been for model->GetModelDef().

Parameters
streamflagsVertex streams required by the fragment stage. This equals the streamflags parameter passed on the last call to BeginPass.
modelThe model that should be rendered.
dataPrivate data for the model as returned by CreateModelData.

postconditions : Subsequent calls to RenderModel for models that use the same CModelDef object and the same texture must succeed.

Implemented in ShaderModelVertexRenderer, and InstancingModelRenderer.

virtual void ModelVertexRenderer::UpdateModelData ( CModel model,
CModelRData data,
int  updateflags 
)
pure virtual

UpdateModelData: Calculate per-model data for each frame.

ModelRenderer implementations must call this once per frame for every model that is to be rendered in this frame, even if the value of updateflags will be zero. This implies that this function will also be called at least once between a call to CreateModelData and a call to RenderModel.

ModelVertexRenderer implementations should use this function to perform software vertex transforms and potentially other per-frame calculations.

Parameters
modelThe model.
dataPrivate data as returned by CreateModelData.
updateflagsFlags indicating which data has changed during the frame. The value is the same as the value of the model's CRenderData::m_UpdateFlags.

Implemented in ShaderModelVertexRenderer, and InstancingModelRenderer.


The documentation for this class was generated from the following file: