中山网站定制公司,怎么做钓鱼网站生成,ui设计师需要考什么证,wordpress 4.7.5漏洞渐变文字(osgText::FadeText类)继承自osgText::Text类继承关系图如图9-6所示 图9-6 osgText::FadeText的继承关系图 从继承关系图中可以看出#xff0c;它继承自osgText::Text类#xff0c;因此#xff0c;它具备一般文字属性的设置方法这里不再重复说明。创建渐变文字与一般… 渐变文字(osgText::FadeText类)继承自osgText::Text类继承关系图如图9-6所示 图9-6 osgText::FadeText的继承关系图 从继承关系图中可以看出它继承自osgText::Text类因此它具备一般文字属性的设置方法这里不再重复说明。创建渐变文字与一般的文字没有很大的区别只是它创建的是 osgText:FadeText类的实例对象。同时它还需要设置拣选回调(setCullCallback)为聚集筛选(osg::ClusterCullingCallback), 聚集筛选是一种类似于背面筛选的场景筛选方法但是它可以将多个对象组合起来并进行统一的背面筛选代码如下: osgText::FadeText* text new osgText::FadeText(); text-setCullCallback(new osg::ClusterCullingCallback(pos,normal,0.0)); 渐变文字在制作三维地图时非常有用能够达到很好的渐变效果。尤其是由一个概览到局部细节时显示效果是非常不错的。 渐变文字示例 渐变文字(osgText::FadeText)示例的代码如程序清单9-4所示:
1. /* 渐变文字示例 osgText::FadeText */
2. // 创建文字
3. osg::ref_ptrosgText::Text createText(const string strDataFolder, const std::string str, osg::Vec3 pos)
4. {
5. // 创建渐变文字对象
6. osg::ref_ptrosgText::FadeText text new osgText::FadeText();
7.
8. // 设置筛选回调
9. osg::Vec3 normal(0.0, 0.0, 1.0);
10.
11. // 设置为聚集筛选一种类似于背面筛选的场景筛选方法但是它可以将多个对象组合起来并进行统一的背面筛选
12. text-setCullCallback(new osg::ClusterCullingCallback(pos, normal, 0.0));
13.
14. text-setText(str);
15. string strFontPath strDataFolder font\\arial.ttf;
16. text-setFont(strFontPath);
17. text-setPosition(pos);
18. text-setCharacterSize(300.0);
19.
20. // 设置字体大小的模式
21. text-setCharacterSizeMode(osgText::Text::OBJECT_COORDS_WITH_MAXIMUM_SCREEN_SIZE_CAPPED_BY_FONT_HEIGHT);
22. text-setAutoRotateToScreen(true);
23.
24. return text.get();
25. }
26.
27. // 创建渐变文字
28. osg::ref_ptrosg::Node createFadeText(const string strDataFolder)
29. {
30. osg::ref_ptrosg::Group group new osg::Group;
31.
32. // 关闭深度测试
33. group-getOrCreateStateSet()-setMode(GL_DEPTH_TEST, osg::StateAttribute::OFF);
34.
35. osg::ref_ptrosg::Geode geode new osg::Geode;
36. group-addChild(geode.get());
37.
38. // 设置TEXT
39. std::vectorstd::string textList;
40. for (int i 1; i 11; i)
41. {
42. textList.push_back(std::to_string(i));
43. }
44.
45. int numX 200;
46. int delta 10;
47.
48. // 添加Drawable
49. int t 0;
50. for (int i 100; i numX; i delta, t)
51. {
52. geode-addDrawable(createText(strDataFolder, textList[t%textList.size()], osg::Vec3(0, i, 100)));
53. }
54.
55. return group.get();
56. }
57.
58. // 渐变文字示例
59. void fadeText_9_4(const string strDataFolder)
60. {
61. osg::ref_ptrosgViewer::Viewer viewer new osgViewer::Viewer();
62. osg::ref_ptrosg::GraphicsContext::Traits traits new osg::GraphicsContext::Traits;
63. traits-x 40;
64. traits-y 40;
65. traits-width 600;
66. traits-height 480;
67. traits-windowDecoration true;
68. traits-doubleBuffer true;
69. traits-sharedContext 0;
70.
71. osg::ref_ptrosg::GraphicsContext gc osg::GraphicsContext::createGraphicsContext(traits.get());
72.
73. osg::ref_ptrosg::Camera camera viewer-getCamera();
74. camera-setGraphicsContext(gc.get());
75. camera-setViewport(new osg::Viewport(0, 0, traits-width, traits-height));
76. GLenum buffer traits-doubleBuffer ? GL_BACK : GL_FRONT;
77. camera-setDrawBuffer(buffer);
78. camera-setReadBuffer(buffer);
79.
80. osg::ref_ptrosg::Group root new osg::Group();
81.
82. // 加入渐变文字
83. root-addChild(createFadeText(strDataFolder));
84.
85. // 读取地形模型
86. string strDataPath strDataFolder lz.osg;
87. osg::ref_ptrosg::Node node osgDB::readNodeFile(strDataPath);
88. root-addChild(node.get());
89.
90. // 优化场景数据
91. osgUtil::Optimizer optimizer;
92. optimizer.optimize(root.get());
93. viewer-setSceneData(root.get());
94. viewer-realize();
95. viewer-run();
96. } 运行程序截图如图9-7所示。 图9-7渐变文字示例截图