NiRenderStep
: public NiRefObject
<NiRenderStep.h>
Discussion
這個類是所有render steps的基類,它是一個完整渲染幀中的一步,純虛函數PerformRendering 是要被其子類重載實現以執行用戶的渲染函數,NiRenderStep 提供了一個純虛接口用來設置和獲得輸出渲染目標組即render target group ,如果需要Pre- and post-processing回調函數也要提供。
構造函數
NiRenderStep()
唯一的構造函數是用來設置激活狀態active state 爲 true,及默認名字是"Render Step".
提供的虛函數接口有:
virtual bool SetOutputRenderTargetGroup(NiRenderTargetGroup* pkOutputRenderTargetGroup) = 0
virtual NiRenderTargetGroup* GetOutputRenderTargetGroup() = 0
這些純虛函數是用來設置和獲得包括render step最終渲染結果的渲染目標組,Render steps 並不是一定要支持訪問一個輸出渲染目標組,如果SetOutputRenderTargetGroup 返回false,將不允許渲染目標組被設置, 如果GetOutputRenderTargetGroup 函數返回NULL, render step 也將不允許渲染目標組被訪問,一個不提供渲染目標組被訪問的典型例子:
在渲染多個不同buffer時,只有在subsequent steps 中作爲紋理時會提供,別的step都不提供。
virtual unsigned int GetNumObjectsDrawn() const = 0;
virtual float GetCullTime() const = 0;
virtual float GetRenderTime() const = 0;
virtual void PerformRendering() = 0
提供的成員函數:
void SetName(const NiFixedString& kName)
const NiFixedString& GetName() const
void Render():1.pre-processing callback 2.PerformRendering 3.post-processing callback
void SetActive(bool bActive)
bool GetActive() const
這些函數用來設置和獲得render step的激活狀態,Render 函數不檢測這些狀態,所以它要依靠render step 來檢測這些狀態,NiRenderFrame 在調用render step的Render 函數前,會先判斷該render step是否是激活中。
void SetPreProcessingCallbackFunc(Callback pfnCallback, void* pvCallbackData = NULL)
Callback GetPreProcessingCallbackFunc() const
void* GetPreProcessingCallbackFuncData() const
設置和獲取Pre回調函數,在Render 的前部分執行。
void SetPostProcessingCallbackFunc(Callback pfnCallback, void* pvCallbackData = NULL)
Callback GetPostProcessingCallbackFunc() const
void* GetPostProcessingCallbackFuncData() const
設置和獲取Post回調函數,在Render 的後部分執行。