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的场景物件列表