Pyrogenesis HEAD
Pyrogenesis, a RTS Engine
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:

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 UploadModelData (Renderer::Backend::IDeviceCommandContext *deviceCommandContext, CModel *model, CModelRData *data)=0
 Upload per-model data to backend. More...
 
virtual void PrepareModelDef (Renderer::Backend::IDeviceCommandContext *deviceCommandContext, const CModelDef &def)=0
 PrepareModelDef: Setup backend state for rendering of models that use the given CModelDef object as base. More...
 
virtual void RenderModel (Renderer::Backend::IDeviceCommandContext *deviceCommandContext, Renderer::Backend::IShaderProgram *shader, 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

◆ ~ModelVertexRenderer()

virtual ModelVertexRenderer::~ModelVertexRenderer ( )
inlinevirtual

Member Function Documentation

◆ CreateModelData()

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 CPUSkinnedModelVertexRenderer, and InstancingModelRenderer.

◆ PrepareModelDef()

virtual void ModelVertexRenderer::PrepareModelDef ( Renderer::Backend::IDeviceCommandContext deviceCommandContext,
const CModelDef def 
)
pure virtual

PrepareModelDef: Setup backend 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
defThe model definition.

Implemented in CPUSkinnedModelVertexRenderer, and InstancingModelRenderer.

◆ RenderModel()

virtual void ModelVertexRenderer::RenderModel ( Renderer::Backend::IDeviceCommandContext deviceCommandContext,
Renderer::Backend::IShaderProgram shader,
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
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 CPUSkinnedModelVertexRenderer, and InstancingModelRenderer.

◆ UpdateModelData()

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 CPUSkinnedModelVertexRenderer, and InstancingModelRenderer.

◆ UploadModelData()

virtual void ModelVertexRenderer::UploadModelData ( Renderer::Backend::IDeviceCommandContext deviceCommandContext,
CModel model,
CModelRData data 
)
pure virtual

Upload per-model data to backend.

ModelRenderer implementations must call this after UpdateModelData once per frame for every model that is to be rendered in this frame.

ModelVertexRenderer implementations should use this function to upload all needed data to backend.

Implemented in CPUSkinnedModelVertexRenderer, and InstancingModelRenderer.


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