Ni3DRenderView

来源:互联网 发布:js div滑动效果 编辑:程序博客网 时间:2024/06/01 09:32
 

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

原创粉丝点击