OSG学习笔记-五
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
OSG学习笔记
第一章OSGSample
一、OSG中的示例程序简介
1.example_osganimate
一)演示了路径动画的使用(AnimationPath、AnimationPathCallback),路径动画回调可以作用在Camera、CameraView、MatrixTransform、PositionAttitudeTransform等四种类型的节点上。
二)演示了osgSim::OverlayNode的使用
2.example_osganimationeasemotion
一)演示了osgAnimation::EaseMotion的使用,EaseMotion可以用于表达位移、速度值随时间的变化情况,通过不同的模板参数(functor),实现了不同的变化曲线。
二)程序中用到了一个使用osgWidget构造的弹出式菜单。
3.example_osganimationhardware
一)演示了在osgAnimation::RigGeometry中使用自定义RigTransformImplementation的方法。
二)可以参考程序中获取骨骼动画模型包含的动画列表的方法。
4.example_osganimationmakepath
一)演示了osgAnimation::Sampler采样器的使用,更新物体颜色(vec4)、物体位置(vec3)。
Sampler派生模板类用于在一组已知离散数据样本的基础上,进行插值计算,得到连续数据。
通过模板参数支持多种插值方法。
二)在更新物体位置这方面,与路径动画AnimationPath类似,但它需要自己写回调来更新节点矩阵,好处是能够使用更灵活的方式来进行数据采样,而AnimationPath只能进行线性内插。
5.example_osganimationmorph
一)演示了利用osgAnimation::MorphGeometry实现几何体变形动画的方法。
6.example_osganimationnode
一)同osganimationmakepath演示的功能基本相同。
7.example_osganimationskinning
一)演示了使用osgAnimation::Skeleton、osgAnimation::Bone构建骨骼,使用osgAnimation::Animation、osgAnimation::Channel构建动画,使用osgAnimation::RigGeometry 构建蒙皮,以及使用osgAnimation::BasicAnimationManager播放骨骼动画的流程。
可以做为学习osgAnimation骨骼动画实现结构的参考。
8.example_osganimationsolid
一)演示了利用多个Channel对一个物体进行运动控制(最终落实到更新MT节点的矩阵)。
与示例osganimationmakepath的区别在于,这里使用了osgAnimation::Channel、osgAnimation::Animation、osgAnimation::UpdateMatrixTransform,对同一个物体应用了多个运动控制的叠加。
9.example_osganimationtimeline
一)演示了osgAnimation中的时间线控制。
osgAnimation::Timeline、osgAnimation::TimelineAnimationManager。
timeline是做什么用的?
10.example_osganimationviewer
一)演示了osgAnimation骨骼动画的加载及播放控制,可以在多个动作间切换,但播放多个动作、动作暂停等方面似乎不好使。
二)程序中出现了一个使用osgWidget构建的播放控制GUI,还有一个可以滑入滑出的菜单,可以作为GUI构建的参考。
11.example_osgautocapture
一)一个自动截屏的示例程序,用到了自定义osgViewer::Renderer,osg::Camera::DrawCallback 等。
二)里面有一段用经纬高和方向角定位相机的代码。
12.example_osgautotransform
一)演示了利用osg::AutoTransform实现自动的缩放、旋转,从而达到按指定的效果自动面向屏幕。
13.example_osgbillboard
一)演示了osg::Billboard的使用。
与AutoTransform的区别在哪里?
14.example_osgblendequation
一)演示了osg::BlendEquation的不同配置对于渲染结果的影响。
15.example_osgcallback
一)演示了OSG中各种回调方法的使用。
16.example_osgcamera
一)演示了单窗口多相机(使用SlaveCamera)、多窗口多相机(一个Viewer,多个GraphicsContext,多个Camera作为Slave添加到viewer下)、多屏幕多窗口。
17.example_osgcatch
一)一个类似接蛋游戏的小游戏程序
18.example_osgclip
一)演示了osg::ClipNode(osg::ClipPlane)的使用。
一)多机同步的演示
20.example_osgcompositeviewer
一)演示了osgViewer::CompositeViewer的使用
21.example_osgcopy
一)演示了osg中clone操作的使用,以及osg::CopyOp的自定义用法。
22.example_osgcubemap
一)演示如何使用高光贴图增强模型显示效果。
高光贴图使用的立方体贴图(osg::TextureCubeMap),高光CubeMap使用osgUtil::HighlightMapGenerator自动生成。
使用osg::TexGen以反射贴图的方式自动生成纹理坐标。
并用osg::TexEnvCombine将高光贴图与原始颜色混合(ADD)。
osgUtil::HighlightMapGenerator派生自osgUtil::CubeMapGenerator,还有其他一些用途的立方体贴图生成器。
23.example_osgdatabaserevisions
一)演示了分页数据库本地缓存及数据版本检查的使用。
24.example_osgdelaunay
一)演示了DelaunayTriangulator的使用,用于对不规则网格点进行三角化处理。
25.example_osgdepthpartition
一)实现了一个派生自osg::Group的DepthPartitionNode节点类型,它可以自动对子节点树按照深度值进行划分,用于解决大场景下深度缓冲的问题。
26.example_osgdepthpeeling
DepthPeeling
27.example_osgdistortion
一)演示了类似哈哈镜的效果
28.example_osgdrawinstanced
一)演示了利用DrawArraysInstanced将一个四边形面片渲染成若干小面片的方法。
29.example_osgfadetext
一)演示了osgText::FadeText的使用,并使用osg::ClusterCullingCallback实现文字的聚集剪裁(根据指定法线与视线对物体进行剪裁)。
FadeText封装了自动淡入淡出和自动进行互相间的遮挡技术的功能。
30.example_osgfont
一)演示了字体的使用
一)演示了用多种技术方法实现森林的效果。
首先对整个森林的所有树木做分块处理(cell),然后按照分块结构,使用多种方式进行建模。
对树的建模使用的方法包括:Billboard、Shader、十字面片等。
32.example_osgfpdepth
一)演示了使用深度缓冲相关的应用。
floating point depth buffer? invert the depth buffer?
33.example_osgfxbrowser
一)演示了使用osgFX创建的几种特殊渲染效果,使用osgFX::Effect管理各种效果。
包括的效果有:AnisotropicLighting、BumpMapping、Cartoon、Outline、Scribe、SpecularHighlights。
34.example_osggameoflife
一)演示了一种叫做"Ping-Pong"的渲染技术,它是指利用FBO和两张纹理对象,在着色程序中以一个纹理为输入把计算结果写入另一个纹理,然后反转输入输出纹理再进行相同的操作,如此迭代。
二)其中用到的"GameOfLife"是使用Ping-Pong处理图片并输出的一个示例。
35.example_osggeodemo
一)演示了.geo文件的加载,以及geo模型的动画更新。
二)GEO PRO是CarbonGraphics出品的一个建模工具,.geo文件是它的模型文件格式。
36.example_osggeometry
一)演示了osg::Geometry(几何体)的各种构造方法。
37.example_osggeometryshades
一)演示了如何利用GeometryShader程序动态改变几何体的绘制,示例中把一个点绘制成不断变化的十字线。
38.example_osggpx
一)演示了一个跟踪路径的数据结构,以及使用osgDB::XmlParser对它的读写。
39.example_osggraphicscost
一)演示了osg::GraphicsCostEstimator的使用,osg::GraphicsCostEstimator用来评估编译/绘制几何体、纹理、着色程序、节点所需要的时间。
40.example_osghangglide
一)演示了使用程序构建场景的过程。
二)实现了一个滑行漫游器。
41.example_osgimagesequence
一)演示了使用osg::ImageSequence作为纹理贴图,并通过osg::ImageStream接口进行贴图动画播放控制的方法。
ImageSequence贴图的加载有多种控制方案。
一)演示了osgSim::Impostor的使用。
Impostor节点的作用似乎是,通过在一些情况下,把物体渲染结果保存为纹理,而后通过渲染纹理代替渲染物体,以达到提高渲染效率的目的?二)实现了一个自定义的漫游器。
43.example_intersection
一)演示并对别了多种求交计算的方法,如osgSim::LineOfSight、osgSim::HeightAboveTerrain、osgSim::ElevationSlice、osgUtil::IntersectorGroup。
44.example_osgkdtree
一)演示了kdtreee的使用。
OSG能够在读取模型文件时自动构建kdtree。
45.example_keyboard
一)演示了键盘输入消息的处理。
46.example_keyboardmouse
一)演示了鼠标、键盘消息的处理。
47.example_osglauncher
一)一个三位的程序导航菜单。
为每个例子程序构造一个立方体对象,通过即时的求交计算判定当前选中的对象,从而关联一个例子程序并启动执行。
48.example_osglight
一)演示了光照的使用。
49.example_osglightpoint
一)演示了osgSim::LightPoint、osgSim::LightPointNode的使用。
50.example_osglogicop
一)演示了osg::LogicOp(glLogicOp)的使用。
51.example_osglogo
一)演示了logo的制作。
52.example_osgmanipulator
一)演示了osgManipulator中各种拖拽器(Dragger)的使用。
53.example_osgmemorytest
一)一些GL操作的测试。
54.example_osgmotionblur
一)演示了如何利用累积缓冲区(accumulation buffer)实现一个简单的运动模糊(motion blur)效果。
一)演示了视频播放的功能。
需要使用视频读取插件,如osgdb_quicktime、osgdb_ffmpg
56.example_osgmultiplerendertargets
一)演示了如何使用RTT(Render To Texture)、MRT(Multiple Render Targets)。
57.example_osgmultitexture
一)演示了多重纹理的使用。
58.example_osgmultitexturecontrol
一)演示了osgFX::MultiTextureControl的使用。
59.example_osgmultiviewpaging
一)多视口分屏的演示。
60.example_osgoccluder
一)演示了osg::ConvexPlanarOccluder的使用。
61.example_osgocclusionquery
一)演示了osg::OcclusionQueryNode的使用。
62.example_osgoit
一)depth peeling的使用。
63.example_osgoutline
一)演示了使用osgFX::Outline绘制物体外轮廓线的方法。
64.example_osgpackeddepthstencil
一)osg::Camera::PACKED_DEPTH_STENCIL_BUFFER的使用。
65.example_osgpagedlod
一)演示了利用osg::PagedLOD实现层次细节及流式加载。
66.example_osgparametric
一)演示了使用顶点着色程序(Vertex Shader Program)实现简单的变形动画。
67.example_osgparticle
一)几个粒子效果的演示,并使用了自定义osgParticle::Operator的方法控制粒子运动。
68.example_osgparticleeffects
一)演示了osgParticle中几个预定义Effect的效果,包括爆炸、爆炸碎片、烟、火等。
69.example_osgparticleshader
一)osgParticle实现的一个喷泉效果
70.example_osgpdf
使用osgWidget::PdfReader读取并显示pdf文档的例子,需要有相应插件支持。
71.example_osgphotoalbum
一个3D相册演示程序?实现了一种把多个图片文件合并到一个相册文件中的格式。
72.example_osgpick
通过求交计算进行拾取判断的一个例子。
73.example_osgplanets
天体运行的一个示例程序,其中使用billboard为太阳制作了大气层效果。
74.example_osgpoints
演示了使用点精灵(osg::PointSprite)绘制点,以及设置点大小。
75.example_osgpointsprite
使用点精灵绘(osg::PointSprite)制点云的示例。
76.example_osgposter
演示了渲染大分辨率图片(high-resolution image)的方法。
77.example_osgprecipitation
演示了osgParticle::PrecipitationEffect实现的雨、雪效果。
78.example_osgprerender
演示了渲染到纹理(RTT)的使用。
在PRE_RENDER时把场景渲染到纹理上,再使用这个纹理渲染主场景。
79.example_osgprerendercubemap
演示了使用立方体贴图(osg::TextureCubeMap)实现环境反射的方法。
80.example_osgrefelect
演示了一个镜面反射效果的实现。
81.example_osgrobot
演示了一个由矩阵节点树构造成的多关节机器人。
82.example_osgscalarbar
演示了使用osgSim::ScalarBar实现的颜色标尺效果。
83.example_osgscreencapture
演示了利用osg::Camera::DrawCallback派生类实现截屏的方法。
84.example_osgscribe
在模型表面附加网格线的效果,利用osg::PolygonMode和osg::PolygonOffset实现,与osgSim::Scribe效果和原理一致。
85.example_osgsequence
演示了序列化播放多个模型的效果,利用osg::Sequence节点实现。
86.example_osgshadercomposition
演示了着色程序组合(ShaderComposition)的使用,用到osg::ShaderAttribute
87.example_shadergen
演示了利用osgUtil::ShaderGenVisitor生成替换固定功能管线的GLSL代码。
88.example_osgshaders
演示了Data/shaders目录下几个shader代码文件的使用。
89.example_osgshaderterrain
一个在着色程序中通过纹理采样计算地形高程来生成地形的示例。
90.example_osgshadow
包含多种实时阴影算法实现的阴影效果演示程序。
91.example_osgshape
利用osg::ShapeDrawable构建常用几何体的演示。
92.example_sharedarray
演示了以自定义数据结构构造几何体的方法,派生osg::Array类。
93.example_osgsidebyside
osgSim::MultiSwitch、osgSim::DOFTransform节点的控制。
单窗口多视口的使用。
94.example_osgsimplifier
演示了使用osgUtil::Simplifier对模型进行简化的方法。
95.example_osgsimulation
演示了节点跟踪漫游器(osgGA::NodeTrackerManipulator)的使用。
96.example_osgslice
应该是很老的一个示例,还在直接使用osgUtil::SceneView,没有链接osgViewer库,所以窗口GC调用失败,不能运行。
97.example_osgspacewarp
使用一个小技巧实现点在相机运动情况下观察变成线的效果(类似虚影的效果)。
小技巧是,对于每个点,也绘制一条线,线的一个端点始终在点的当前位置上,另一个端点使用点在上
一帧的位置。
98.example_osgspheresegment
使用osgSim::SphereSegment绘制弧面的例子。
99.example_osgspotlight
演示了聚光灯的使用。
osg::LightSource
100.example_osgstereoimage
演示了生成立体图片的方法。
101.example_osgstereomatch
左右眼图像立体匹配的示例,使用Data/images目录下的狗的图片运行。
102.example_osgteapot
使用osg::Drawable派生类封装经典的glut_teapot的绘制。
103.example_osgterrain
动态控制地形参数的示例,使用osgTerrain::Terrain。
104.example_tessellate
演示了镶嵌(tessellation)的使用,osgUtil::Tessellator。
105.example_osgtext
演示了文字的各种使用方式,osgText::Text。
106.example_osgtext3D
演示了立体文字的使用,osgText::Text3D。
107.example_osgtexture1D
演示了一维纹理的使用osg::Texture1D,纹理坐标生成节点osg::TexGenNode。
108.example_osgtexture2D
演示了二维纹理的使用osg::Texture2D,并通过更新回调演示了纹理在不同纹理过滤方式(filter)、纹理环绕模式(wrap)、各项异型系数(anisotropic)下的不同效果。
109.example_osgtexture3D
演示了三维纹理的使用osg::Texture3D。
示例中用多张二维图片组装出一个三维纹理对象,在顶点数据中指定s、t两个纹理坐标,而使用osg::TexGen单独生成纹理坐标r(TexGen可以用来独立的生成某一维的纹理坐标),通过在更新回调中更新TexGen的参数动态更新纹理坐标r,由于纹理过滤方式使用的线性过滤,从而得到的效果是在多张纹理间平滑切换。
110.example_osgtexturecompression
演示了多种压缩格式(InternelFormatMode)的对比效果。
同时有多视口
osgViewer::CompositeViewer的使用。
111.example_osgtexturerectangle
演示了矩形纹理osg::TextureRectangle的使用,矩形纹理的纹理坐标范围必须为图片像素范围,并且环绕模式不支持重复,不支持边框和mipmap。
112.example_osgthirdpersonview
使用osgViewer::CompositeViewer构建多窗口视图,并在第二个窗口中绘制第一个窗口相同的场景的同时绘制出第一个窗口相机的视锥体。
113.example_osgthreadedterrain
一)使用增量编译osgUtil::IncrementalCompileOperation,避免加载大模型时造成的帧率下降。
二)osgTerrain::Layer、osgTerrain::TerrainTile的使用。
114.example_osguniformbuffer
演示了osg::UniformBufferObject的使用。
115.example_osgunittests
单元测试代码。
116.example_osguserstats
演示了如何在OSG的统计信息显示界面中显示用户自定义的统计信息。
117.example_osgvertexattributes
演示了在着色程序中使用顶点属性(VertexAttribute)。
118.example_osgvertexprogram
使用立方体贴图(CubeMap)和顶点着色程序(VertexShader)实现环境反射的例子,同时提供了一个天空盒的实现。
119.example_osgviewerGLUT
OSG与GLUT窗口系统的结合。
120.example_osgviewerMFC
OSG与MFC的结合。
121.example_osgvirtualprogram
着色程序的使用。
122.example_osgvolume
三维纹理和体渲染的示例。
123.example_osgwidgetaddremove
osgWidget动态添加和删除Widget的示例,有鼠标事件的自定义处理。
124.example_osgwidgetbox
osgWidget::Box的使用,以及拖拽处理。
125.example_osgwidgetcanvas
osgWidget::Canvas的使用。
126.example_osgwidgetframe
osgWidget::Frame的使用,能够拖动左右下及角上的边框改变Widget大小,拖动上侧的边框移动Widget。
127.example_osgwidgetinput
接收文字输入的osgWidget::Input的使用。
128.example_osgwidgetlabel
文字标签osgWidget::Label的使用。
129.example_osgwidgetmenu
使用osgWidget构造菜单的示例。
130.example_osgwidgetmessagebox
使用osgWidget::Frame、osgWidget::Box、osgWidget::Label等构建的MessageBox的示例。
131.example_osgwidgetnotebook
使用osgWidget构造的带Tab的记事本。
132.example_osgwidgetperformance
osgWidget效率测试。
133.example_osgwidgetscrolled
通过设置鼠标滚轮消息回调处理函数处理滚轮消息,实现osgWidget窗口的滚屏。
134.example_osgwidgetshader
对Widget使用着色程序渲染。
135.example_osgwidgetstyled
osgWidget::Style的使用。
136.example_osgwidgettable
表格osgWidget::Table的使用。
137.example_osgwidgetwindow
LUA脚本的使用。
138.example_osgwindows
多窗口拼接的示例。
139.example_osganalysis
场景分析?
二、osganimate
一)演示了路径动画的使用(AnimationPath、AnimationPathCallback),路径动画回调可以作用在Camera、CameraView、MatrixTransform、PositionAttitudeTransform等四种类型的节点上。
二)演示了osgSim::OverlayNode的使用
1、OverlayNode用法
OverlayNode is for creating texture overlays on scenes, with the overlay texture being generated by pre rendering an Overlay Subgraph to a texture, then projecting this resulting texture on the scene.
Eg:
osgSim::OverlayNode* overlayNode = new osgSim::OverlayNode(technique); overlayNode->setContinuousUpdate(true);
overlayNode->setOverlaySubgraph(movingModel);
overlayNode->setOverlayBaseHeight(baseHeight-0.01);
overlayNode->addChild(baseModel);
root->addChild(overlayNode);
2、osg::AnimationPath用法
AnimationPath encapsulates a time varying transformation pathway. Can be used for updating camera position and model object position.AnimationPathCallback can be attached directly to Transform nodes to move subgraphs around the scene.
Eg:
osg::AnimationPath* animationPath = new osg::AnimationPath; animationPath->setLoopMode(osg::AnimationPath::LOOP);
for(int i=0;i<numSamples;++i)
{
animationPath->insert(time,osg::AnimationPath::ControlPoint(position, rotation));
}
3、osg:: AnimationPathCallback用法
路径动画回调可以作用在Camera、CameraView、MatrixTransform、PositionAttitudeTransform等四种类型的节点上。
Eg:
osg::PositionAttitudeTransform* xform = new
osg::PositionAttitudeTransform;
xform->setUpdateCallback(new
osg::AnimationPathCallback(animationPath,0.0,1.0));
xform->addChild(positioned);
osg::MatrixTransform* xform = new osg::MatrixTransform;
xform->setUpdateCallback(new
osg::AnimationPathCallback(animationPath,0.0f,2.0));
xform->addChild(positioned);
三、转OSGchina中array的名词解释
osg:: ClearNode;颜色清除节点;用于设置清除颜色缓存的相关选项,它的子节点将在场景中首先渲染,以确保正确执行颜色缓存的设置;osghangglide
osg:: ClipNode;剪切平面节点;定义场景中的剪切平面并剪切所有可剪切的子节点。
注意,ClipNode能够剪切的节点不一定是它的子节点,详见第七章有关LightSource类的部分;osgclip
osg:: CoordinateSystemNode;坐标系统节点;根据地球椭球体模型精确定位子节点的位置信息;osgsimulation
osg:: LightSource;光源节点;定义场景中的光源并计算所有可接受光照的节点。
与ClipNode类似,LightSource照明的节点也不一定是它的子节点,详见第七章相关的部分;osglight
osg:: OccluderNode;遮挡节点;如果自定义的遮挡形状能够将观察者的视线和场景的某个节点隔离开,那么遮挡节点将负责隐去这个节点(除非该节点是遮挡节点的子节点);osgoccluder
osg:: Projection:投影节点;设置子节点渲染时的截锥投影或正交投影矩阵,常用于在3D场景中绘制2D图形和文字;osgscalarbar
osg:: ProxyNode;文件代理节点;该节点将引用指定的模型文件作为子节点
osg:: TexGenNode:纹理生成节点;设定某个纹理单元的纹理生成坐标,它对场景中节点的影响同样不限于自己的子节点。
TexGenNode,LightSource和ClipNode 主要用于渲染状态不断变化的情况下,详见第七章;osgspotlight
osg:: LOD;细节层次节点;根据观察者与LOD节点距离的层次变化,显示不同的子节点;osgspheresegment
osg:: PagedLOD:分页细节层次节点;它与LOD节点的主要区别是可以指定外部的模型文件作为子节点;osgpagedlod
osgSim:: Impostor:图片缓存细节层次节点;这种LOD节点可以用缓存的图片来代替模型子节点;osgimpostor
osg:: Switch;开关节点;控制某个子节点显示或隐藏,可用于表达场景中物体在不同时刻的不同形态;osgcatch
osg:: Sequence:序列节点;控制子节点按照次序逐个显示,可以设置持续时间与序列循环方式;osgsequence
osgSim:: MultiSwitch:多重开关节点;控制某些子节点同时显示或隐藏
osgSim:: VisibilityGroup:可视范围节点;使用某个节点作为参数设定一个范围,当观察者进入该范围时显示可视范围节点的子节点
osg:: Transform:变换节点基类;各种用于物体位置变换的节点的基类,不能直接实例化。
OSG中物体的位移、旋转和放缩使用四阶矩阵进行换算
osg:: AutoTransform:自动对齐节点;自动变换子节点使其始终朝向屏幕;osgautotransform
osg:: Camera;摄像机节点;摄像机节点可以对其子节点进行投影并显示,场景树必须通过一个摄像机才能够显示在视窗中(这一步由OSG自动完成),详见第十一章;osgcamera
osg:: CameraView:摄像机视图节点;这个节点本身并不执行任何渲染,它可以用来计算节点在指定参数的摄像机中所处的位置,并不常用
osg:: MatrixTransform;矩阵变换节点;直接使用矩阵来执行子节点的位置变换。
它还包含了来自osgManipulator库的派生类,可用于增强场景交互的能力,详见第十七章;osgplanets
osg:: PositionAttitudeTransform;位置姿态变换节点;这是用于控制物体位置变换的最常用的组节点之一,使用三维数组来控制位置,使用四元数来控制物体的姿态(旋转角度);osgcatch
osgSim:: DOFTransform;自由度变换节点;控制物体的位移和旋转,并对其自由度作出限制
osgFX:: Effect:特效节点基类;用于实现子节点的各种特效,包括凹凸贴图,卡通渲染,雕刻线,各项异向高光等,详见第十五章;osgfxbrowser
osgFX:: MultiTextureControl:多重纹理节点;通过调整各个纹理单元的权重,控制子节点的纹理
osgParticle:: ParticleEffect:粒子节点基类;用于实现场景的粒子效果,包括爆炸效果,火焰,烟尘等,详见第十六章;osgparticleeffects
osgShadow:: ShadowedScene:阴影效果节点;将子节点分别设置为阴影的投射者和接收者之后,可以实现实时的阴影效果,详见第十五章;osgshadow
osgSim:: OverlayNode:纹理覆盖节点;将子树渲染到纹理,再将纹理投影到场景中;osgsimulation
osgTerrain:: Terrain:地形节点;使用实时的绘制算法生成高度地形,详见第十七章;osgterrain
第二章代码样例
1.设置线框显示
// 设置线框模式
osg::StateSet* stateset = node->getOrCreateStateSet();
osg::ref_ptr<osg::PolygonMode> polygonMode = new osg::PolygonMode(); polygonMode->setMode( osg::PolygonMode::FRONT_AND_BACK,
osg::PolygonMode::LINE);
stateset->setAttribute( polygonMode.get(),
osg::StateAttribute::OVERRIDE | osg::StateAttribute::ON );
第三章其他知识
1.OSG环境变量设置
OSG_FILE_PATH
2.static_cast。