NiRenderStep

 

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 的後部分執行。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章