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基類派生而來,這個函數是用NiCamera和NiCullingProcess來分割場景中所有註冊的潛在可見幾何體。相同的攝像機和切割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的場景物件列表