Pyrogenesis HEAD
Pyrogenesis, a RTS Engine
|
Class ModelVertexRenderer: Normal ModelRenderer implementations delegate vertex array management and vertex transformation to an implementation of ModelVertexRenderer. More...
#include <ModelVertexRenderer.h>
Public Member Functions | |
virtual | ~ModelVertexRenderer () |
virtual CModelRData * | CreateModelData (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... | |
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.
|
inlinevirtual |
|
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.
key | An opaque pointer to pass to the CModelRData constructor |
model | The model. |
Implemented in CPUSkinnedModelVertexRenderer, and InstancingModelRenderer.
|
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.
def | The model definition. |
Implemented in CPUSkinnedModelVertexRenderer, and InstancingModelRenderer.
|
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().
model | The model that should be rendered. |
data | Private 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.
|
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.
model | The model. |
data | Private data as returned by CreateModelData. |
updateflags | Flags 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.
|
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.