当前位置: 首页 > news >正文

seo线下培训课程五行seo博客

seo线下培训课程,五行seo博客,凡科网站制作,自已电脑做网站服务器渐变文字(osgText::FadeText类)继承自osgText::Text类继承关系图如图9-6所示 图9-6 osgText::FadeText的继承关系图 从继承关系图中可以看出,它继承自osgText::Text类,因此,它具备一般文字属性的设置方法这里不再重复说明。创建渐变文字与一般…

        渐变文字(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_ptr<osgText::Text> createText(const string &strDataFolder, const std::string &str, osg::Vec3 pos)  
4.	{  
5.	    // 创建渐变文字对象  
6.	    osg::ref_ptr<osgText::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_ptr<osg::Node> createFadeText(const string &strDataFolder)  
29.	{  
30.	    osg::ref_ptr<osg::Group> group = new osg::Group;  
31.	  
32.	    // 关闭深度测试  
33.	    group->getOrCreateStateSet()->setMode(GL_DEPTH_TEST, osg::StateAttribute::OFF);  
34.	  
35.	    osg::ref_ptr<osg::Geode> geode = new osg::Geode;  
36.	    group->addChild(geode.get());  
37.	  
38.	    // 设置TEXT  
39.	    std::vector<std::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_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer();  
62.	    osg::ref_ptr<osg::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_ptr<osg::GraphicsContext> gc = osg::GraphicsContext::createGraphicsContext(traits.get());  
72.	  
73.	    osg::ref_ptr<osg::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_ptr<osg::Group> root = new osg::Group();  
81.	  
82.	    // 加入渐变文字  
83.	    root->addChild(createFadeText(strDataFolder));  
84.	  
85.	    // 读取地形模型  
86.	    string strDataPath = strDataFolder + "lz.osg";  
87.	    osg::ref_ptr<osg::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渐变文字示例截图

http://www.khdw.cn/news/3266.html

相关文章:

  • 用vs代码做网站医疗器械龙头股
  • 网站建设 宣传单韩国搜索引擎排名
  • 微官网 手机网站谷歌sem
  • 忘忧草福建导航seo外包公司哪家好
  • 网站seo优化公司宁波网络推广运营公司电话
  • 用bootstrap做的网站小红书怎么推广引流
  • 3小说网站开发搜索引擎营销成功案例
  • 男女情感类网站浙江企业seo推广
  • 做网站用图片算侵犯著作权吗如何进行网络推广
  • 医学关键词 是哪个网站做网络广告
  • 网站的功能建设广州私人做网站
  • 电子商务网站模板会计培训班多少钱
  • 可以免费做简历的网站小说关键词自动生成器
  • 石家庄免费网站设计培训优化
  • 辽宁省住房和城乡建设厅网站上不去搜索引擎营销的方式
  • 湖南手机网站建设公司自己做网站流程
  • 凡客网站建设怎么样知乎怎么申请关键词推广
  • 深圳做网站平台维护的公司海南网站网络推广
  • 做网站排名的公司免费推广神器
  • wordpress固定连接出现中文肇庆seo排名外包
  • wordpress仿互站指定关键词排名优化
  • 做外贸最适合的网站系统杭州百度推广优化排名
  • .tv可以做门户网站不网推获客平台
  • 政府政务公开网站建设找网络公司做推广费用
  • 慈溪做网站公司哪家好谷歌搜索引擎香港入口
  • 怎么优化自己网站的关键词营销网站建设服务
  • 宁波建工合肥正规的seo公司
  • 城乡与建设部网站济南网络推广公司
  • 做网站设计需要办理icp搜索引擎优化的主要策略
  • 做nba直播网站有哪些人百度pc网页版登录入口