vrRenderStrategy的类视图如图9.10.1所示,常用的渲染策略类包含 3个:vrRender StrategyBounds,渲染出一个包围盒;vrRenderStrategyHighlight,渲染出一个高亮显示的几何体;vrRenderStrategyNormals,渲染出法线几何体。
图9.10.1 渲染策略的类视图
高亮渲染策略vrRenderStrategyHighlight的设置,主要包含线条宽度、线条颜色和是否使用线框模式:
//高亮显示 1
vrRenderStrategyHighlight *m_strategyHighlight;
m_strategyHighlight=new vrRenderStrategyHighlight();
m_strategyHighlight->ref();
m_strategyHighlight->setLineWidth(1.0f );
m_strategyHighlight->setColor(1.0f,0.0f,0.0f,1.0f);
m_strategyHighlight->setWireframeEnable(true);
包围盒渲染策略vrRenderStrategyBounds的设置,主要包含线条宽度、线条颜色和是否使用线框模式:
//包围盒2
vrRenderStrategyBounds *m_strategyBounds;
m_strategyBounds=new vrRenderStrategyBounds();
m_strategyBounds->ref();
m_strategyBounds->setLineWidth(1.0f );
m_strategyBounds->setColor(1.0f,0.0f,0.0f,1.0f);
m_strategyBounds->setWireframeEnable(true);
法线渲染策略vrRenderStrategyNormals的设置,主要包含法线长度和线条颜色:
//法线3(www.daowen.com)
vrRenderStrategyNormals *m_strategyNormals;
m_strategyNormals=new vrRenderStrategyNormals();
m_strategyNormals->setLength(0.5f );
m_strategyNormals->setColor(1.0f,0.0f,0.0f,1.0f);
m_strategyNormals->ref();
具体渲染策略的使用,还需要遍历三维物体中所包含的几何体vrGeometry,该几何体对象使用setRenderStrategy()方法进行渲染,以下代码使对象obj 使用高亮渲染策略进行渲染:
为了便于使用,把渲染策略编写成PublicMember 类的一个静态函数:
void setObjRenderStrategy(vpObject *obj,int m=0);
该函数包含两个参数:第一个参数是对象指针obj;第二个参数是整数m。m 默认值为0,表示不使用渲染策略;m 为1,表示使用高亮渲染策略;m 为2,表示使用包围盒渲染策略;m 为3,表示使用法线渲染策略。具体代码如图9.10.2所示。
图9.10.2 物体渲染策略方式设计
如图9.10.3所示,对场景中的汽车分别进行了高亮渲染、包围盒渲染和法线渲染策略,只需要在窗口相应的按钮下调用函数:
PublicMember::setObjRenderStrategy(obj,m);
与m 值对应,可对物体按相应的渲染策略进行渲染。
图9.10.3 物体的几种渲染效果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。