网站关键词优化推广,旅游类网站开发开题报告范文,制定网站推广方案,佛山市官网网站建设哪家好各种文字效果(边框、阴影及颜色倾斜)示例 各种文字效果(边框、阴影及颜色倾斜)示例的代码如程序清单9-2所示#xff1a;
1. /* 各种文字效果(边框、阴影及颜色倾斜)示例 */
2. osg::ref_ptrosg::Camera createAllKindText(const string strDataFolder)
3. {…各种文字效果(边框、阴影及颜色倾斜)示例 各种文字效果(边框、阴影及颜色倾斜)示例的代码如程序清单9-2所示
1. /* 各种文字效果(边框、阴影及颜色倾斜)示例 */
2. osg::ref_ptrosg::Camera createAllKindText(const string strDataFolder)
3. {
4. osg::ref_ptrosg::Camera camera new osg::Camera();
5.
6. // 设置投影矩阵
7. camera-setProjectionMatrix(osg::Matrix::ortho2D(0, 1280, 0, 800));
8.
9. // 设置视图矩阵
10. camera-setReferenceFrame(osg::Transform::ABSOLUTE_RF);
11. camera-setViewMatrix(osg::Matrix::identity());
12.
13. // 清除深度缓存
14. camera-setClearMask(GL_DEPTH_BUFFER_BIT);
15.
16. // 设置渲染顺序在主摄像机之前渲染
17. camera-setRenderOrder(osg::Camera::POST_RENDER);
18.
19. // 设置为不接收事件始终不得到焦点
20. camera-setAllowEventFocus(false);
21.
22. string strFontPath strDataFolder fonts\\arial.ttf;
23. osg::ref_ptrosgText::Font font osgText::readFontFile(strFontPath);
24. osg::ref_ptrosg::Geode geode new osg::Geode;
25.
26. osg::ref_ptrosg::StateSet stateset geode-getOrCreateStateSet();
27. stateset-setMode(GL_LIGHTING, osg::StateAttribute::OFF);
28.
29. //--------------------------------------------------------------------
30. // 设置文字的输出的格式
31.
32. // 设置格式为LEFT_TO_RIGHT,从左到右
33. {
34. osg::ref_ptrosgText::Text text new osgText::Text;
35. text-setFont(font.get());
36. text-setColor(osg::Vec4(1.0, 1.0, 0.0, 1.0));
37. text-setCharacterSize(20.0);
38. text-setPosition(osg::Vec3(50.0, 750.0, 0.0));
39. text-setLayout(osgText::Text::LEFT_TO_RIGHT);
40. text-setText(text-setLayout(osgText::Text::LEFT_TO_RIGHT););
41. geode-addDrawable(text.get());
42. }
43. // 设置格式为RIGHT_TO_LEFT从右到左
44. {
45. osg::ref_ptrosgText::Text text new osgText::Text;
46. text-setFont(font.get());
47. text-setColor(osg::Vec4(1.0, 1.0, 0.0, 1.0));
48. text-setCharacterSize(30.0);
49. text-setPosition(osg::Vec3(1200.0, 750.0, 0.0));
50.
51. text-setLayout(osgText::Text::RIGHT_TO_LEFT);
52. text-setAlignment(osgText::Text::RIGHT_BASE_LINE);
53.
54. text-setText(text-setLayout(osgText::Text::RIGHT_TO_LEFT); );
55.
56. geode-addDrawable(text.get());
57. }
58. // 设置格式为VERTICAL垂直
59. {
60. osg::ref_ptrosgText::Text text new osgText::Text;
61. text-setFont(font.get());
62. text-setColor(osg::Vec4(1.0, 1.0, 0.0, 1.0));
63. text-setCharacterSize(20.0);
64. text-setPosition(osg::Vec3(50.0, 750.0, 0.0));
65. text-setLayout(osgText::Text::VERTICAL);
66. text-setText(text-setLayout(osgText::Text::VERTICAL););
67. geode-addDrawable(text.get());
68. }
69. //--------------------------------------------------------------------
70. // 设置阴影
71. {
72. osg::ref_ptrosgText::Text text new osgText::Text;
73. text-setFont(font.get());
74. text-setColor(osg::Vec4(1.0, 1.0, 0.0, 1.0));
75. text-setCharacterSize(40.0);
76. text-setPosition(osg::Vec3(100.0, 650.0, 0.0));
77.
78. // 设置阴影为DROP_SHADOW_BOTTOM_RIGHT
79. text-setBackdropType(osgText::Text::DROP_SHADOW_BOTTOM_RIGHT);
80. text-setBackdropColor(osg::Vec4(0.0, 1.0, 0.0, 1.0));
81. text-setBackdropOffset(0.1, -0.1);
82. text-setText(text-setBackdropType(osgText::Text::DROP_SHADOW_BOTTOM_RIGHT););
83. geode-addDrawable(text.get());
84. }
85.
86. //--------------------------------------------------------------------
87. // 设置边框
88. {
89. osg::ref_ptrosgText::Text text new osgText::Text;
90. text-setFont(font.get());
91. text-setColor(osg::Vec4(1.0, 1.0, 0.0, 1.0));
92. text-setCharacterSize(30.0);
93. text-setPosition(osg::Vec3(100.0, 450.0, 0.0));
94.
95. // 设置边框对齐绘制
96. text-setDrawMode(osgText::Text::TEXT | osgText::Text::BOUNDINGBOX|osgText::Text::ALIGNMENT);
97. text-setText(text-setDrawMode(osgText::Text::TEXT | osgText::Text::BOUNDINGBOX|osgText::Text::ALIGNMENT););
98. geode-addDrawable(text.get());
99. }
100.
101. //-------------------------------------------------------------------
102. // 设置颜色倾斜模式
103. {
104. osg::ref_ptrosgText::Text text new osgText::Text;
105. text-setFont(font.get());
106. text-setColor(osg::Vec4(1.0, 1.0, 0.0, 1.0));
107. text-setCharacterSize(40.0);
108. text-setPosition(osg::Vec3(100.0, 250.0, 0.0));
109.
110. // 设置颜色倾斜模式为PER_CHARCTER
111. text-setColorGradientMode(osgText::Text::PER_CHARACTER);
112.
113. // 设置倾斜4个角落的颜色
114. text-setColorGradientCorners(osg::Vec4(1.0,0.0,0.0,1.0),osg::Vec4(0.0,1.0,0.0,1.0),
115. osg::Vec4(0.0,0.0,1.0,1.0),osg::Vec4(1.0,1.0,1.0,1.0));
116. text-setText(text-setColorGradientMode(osgText::Text::SOLID););
117. geode-addDrawable(text.get());
118. }
119.
120. camera-addChild(geode.get());
121.
122. return camera.get();
123. }
124.
125. void osgText_9_2(const string strDataFolder)
126. {
127. osg::ref_ptrosgViewer::Viewer viewer new osgViewer::Viewer();
128. osg::ref_ptrosg::GraphicsContext::Traits traits new osg::GraphicsContext::Traits;
129. traits-x 40;
130. traits-y 40;
131. traits-width 600;
132. traits-height 480;
133. traits-windowDecoration true;
134. traits-doubleBuffer true;
135. traits-sharedContext 0;
136.
137. osg::ref_ptrosg::GraphicsContext gc osg::GraphicsContext::createGraphicsContext(traits.get());
138.
139. //osg::ref_ptrosg::Camera camera new osg::Camera;
140.
141.
142. // 创建各种文字效果
143. osg::ref_ptrosg::Camera camera createAllKindText(strDataFolder);
144. camera-setGraphicsContext(gc.get());
145. camera-setViewport(new osg::Viewport(0, 0, traits-width, traits-height));
146. GLenum buffer traits-doubleBuffer ? GL_BACK : GL_FRONT;
147. camera-setDrawBuffer(buffer);
148. camera-setReadBuffer(buffer);
149.
150. viewer-addSlave(camera.get());
151.
152. // 添加到根节点
153. osg::ref_ptrosg::Group root new osg::Group();
154. root-addChild(createAllKindText(strDataFolder));
155.
156. // 优化场景数据
157. osgUtil::Optimizer optimizer;
158. optimizer.optimize(root.get());
159.
160. viewer-setSceneData(root.get());
161.
162. viewer-realize();
163.
164. viewer-run();
165. } 运行程序截图如图9-4所示 图9-4 各种文字效果(边框、阴影及颜色倾斜)示例截图