Ni3DRenderView

 

Ni3DRenderView

: public NiRenderView

<Ni3DRenderView.h>

Description

該類是用來渲染場景中的NiAVObject,它有一個攝像機NiCamera指針一個NiCullingProcesss指針,用來分割場景把所有的可見幾何體保存在潛在可見幾何體組中。

 

構造函數

Ni3DRenderView(NiCamera* pkCamera = NULL, NiCullingProcess* pkCullingProcess = NULL, bool bAlwaysUseCameraViewport = true)

唯一的構造函數,初始化一個攝像機指針 一個Culling指針 以備在CalculatePVGeometry 函數計算場景中的可見集時使用。

如果攝像機是NULL的,SetScreenSpaceCameraData 將會在SetCameraData函數中被調用,不再執行切割場景,因此特定的攝像機數據被設置,特定的Culling處理將會產生一組幾何體對象被渲染。如果Culling是NULL的,將導致場景中所有的幾何體都將被渲染而沒有切割。

bAlwaysUseCameraViewport  字段標示:保存在pkCamera 中的視口是在SetCameraData 中使用還是被傳進來得視口替換。

 

重載的基類虛函數

virtual void SetCameraData(const NiRect<float>& kViewport)

NiRenderView基類派生而來,GetAlwaysUseCameraViewport 是true,傳進來得視口kViewport 被忽略,而是用攝像機自帶的視口。

GetAlwaysUseCameraViewport  是false 攝像機的視口被忽略,而是用kViewport字段,重新計算攝像機的數據。

如果保存的攝像機指針是NULL,SetScreenSpaceCameraData 函數將在Render函數中被調用,使用kViewport視口。

virtual void CalculatePVGeometry()

NiRenderView基類派生而來,這個函數是用NiCameraNiCullingProcess來分割場景中所有註冊的潛在可見幾何體。相同的攝像機和切割Culling用於所有的場景圖。

 

提供的成員函數:

void SetCamera(NiCamera* pkCamera)

NiCamera* GetCamera() const

設置和獲得使用的攝像機

void SetCullingProcess(NiCullingProcess* pkCullingProcess)

NiCullingProcess* GetCullingProcess() const

設置和獲得Culling處理指針

void SetAlwaysUseCameraViewport(bool bAlwaysUseCameraViewport)

bool GetAlwaysUseCameraViewport() const

這些函數設置和獲得 SetCameraData 是否應該使用保存在攝像機中的視口來代替傳進函數的視口。

 

void AppendScene(NiAVObject* pkScene)

void PrependScene(NiAVObject* pkScene)

void RemoveScene(NiAVObject* pkScene)

void RemoveAllScenes()

NiTPointerList<NiAVObjectPtr>& GetScenes()

const NiTPointerList<NiAVObjectPtr>& GetScenes() const

這些函數提供訪問保存在render view的場景物件列表

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