引入通道类的头文件为:#include "vpChannel.h"。
通道类视图如图6.21.1所示。一般情况下,只需要一个通道,从一个地方观察场景。有些时候,需要多个通道,从不同角度和方位观察场景的不同地方。
在这里,定义了4个通道:
图6.21.1 通道类继承图
默认通道:pChannel_myChannel;
房屋通道:pChannel_houseChannel;
转角通道:pChannel_portchChannel;
俯视通道:pChannel_orthoChannel;
建立了4个观察者:
默认观察者:pObserver_myObserver;
房屋观察者:pObserver_houseObserver;
转角观察者:pObserver_porchObserver;
俯视观察者:pObserver_orthoObserver;
把4个通道添加到窗体:
pWindow_myWindow->addChannel(pChannel_myChannel);
pWindow_myWindow->addChannel(pChannel_houseChannel);
pWindow_myWindow->addChannel(pChannel_portchChannel);
pWindow_myWindow->addChannel(pChannel_orthoChannel);
分别设置4个观察者:
pObserver_myObserver->setStrategy(pMotionDrive_myMotion);
pObserver_myObserver->addChannel(pChannel_myChannel);
pObserver_myObserver->addAttachment(pEnv_myEnv);(www.daowen.com)
pObserver_myObserver->setScene(pScene_myScene);
Observer_myObserver->setLookFrom(pTransform_hummerTransform);
Observer_houseObserver->addChannel(pChannel_houseChannel);
pObserver_houseObserver->addAttachment(pEnv_myEnv);
pObserver_houseObserver->setScene(pScene_myScene);
pObserver_houseObserver->setLookAt(pObject_farmhouse);
pObserver_porchObserver->addChannel(pChannel_portchChannel);
pObserver_porchObserver->addAttachment(pEnv_myEnv);
pObserver_porchObserver->setScene(pScene_myScene);
pObserver_porchObserver->setLookFrom(pTransform_hummerTransform);
pObserver_orthoObserver->addChannel(pChannel_orthoChannel);
pObserver_orthoObserver->setScene(pScene_myScene);
完整代码如图6.21.2所示。
图6.21.2 建立多通道
运行程序,其效果如图6.21.3所示。
图6.21.3 多通道效果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。