osg中camera是否一定要有视口命令

为视口添加Camera的类,用于显示。类的继承关系如下图
void setView(View *view)
说明:为camera设置依附的view
View *getView()
const View *getView() const
说明:得到该camera的view
void setStates(osg::State *states)
说明:为该camera设置states
osg::States *getStates()
const osg::States *getSates() const
void setAllowEventFocus(bool focus)
说明:设置可以得到事件焦点,就是可以接受外界消息。对于从视口,这个是不需要的
bool getAllowEventFocus() const
void setDisplaySettings(osg::DispalySetting *ds)
说明:设置displaySettings,控制在渲染时的一些信息
自定义的DisplaySetting类
osg::DisplaySetting *getDisplaySettings() const
说明:得到Displaysetting
void setClearColor(const Vec4 &color)
说明:设置清除缓存区背景的颜色RGBA格式
const Vec4 &getClearColor() const
说明:得到清除缓存区颜色设置
void setClearMask(GLbitfield mask)
说明 :设置使用清除标志
参数:清除标志,可以为以下值:GL_COLOR_BUFFER_BIT或者GL_DEPTH_BUFFER_BIT
Glbitfield getClearMask() const
说明:得到所设置的清除标志
void setColorMask(osg::ColorMask *colorMask)
说明:设置屏蔽颜色
参数:colorMask
void setColorMask(bool red , bool green , bool blue , bool alpha)
说明:设置屏蔽颜色
const ColorMask *getColorMask() const
ColorMask *getColorMask()
说明:得到所设置屏蔽的颜色
void setViewport(osg::Viewport *viewport)
void setViewport(int x , int y , int width , int height)
说明:设置视口的尺寸和位置
参数:viewport
归设置的视口类
void setTransformOrder(TransformOrder order)
说明:设置当局部向世界以及世界向局部转化时的矩阵相乘顺序
相乘顺序,可以为以下值:PRE_MULTIPLY、POST_MULTIPLY
TransformOrder getTransformOrder() const
void setProjectionResizePolicy(ProjectionResizePolicy policy)
说明:设置模型如何调整以适应视口
参数:ProjectionResizePolicy
调整策略,可以是以下值FIXED\HORIZONTAL\VERTICAL
ProjectionResizePolicy
getProjectionResizePolicy() const
说明:得到调整策略,即模型如何调整以适应视口
void setProjectionMatrix(const osg::Matrixf &matrix)
说明:直接设置投影矩阵
setProjectionMatrixAsOrtho(double left , double right , double bottom , double top , double zNear , double zFar)
说明:以正交投影的方式设置投影矩阵
void setProjectionMatrixAsOrtho2D(double left , double right , double bottom , double top)
说明:以正交投影的方式设置投影矩阵
void setProjectionMatrixAsFrustum(double left , double right , double bottom , double top , double zNear , double zFar)
说明:以平头截体的方式设置投影矩阵
void setProjectionMatrixAsPerspective(double fovy , double aspectRatio , double zNear , double zFar)
说明:以透视投影的方式设置投影矩阵
bool getProjectionMatrixAsPerspective(double fovy , double aspectRatio , double zNear , double zFar)
说明:以透视投影的方式得到投影矩阵,得到成功返回真
osg::Matrixd &getProjectionMatrix()
说明:得到投影矩阵
bool getProjectionMatrixAsOrtho(double &left , double &right , double bottom , double
&top , double &zNear , double &zFar)
说明:以正交投影的方式得到投影矩阵,得到成功返回真
bool getProjectionMatrixAsFrustum(double &left , double &right , double bottom , double
&top , double &zNear , double &zFar)
说明:以平头截体的方式得到投影矩阵
void setViewMatrix(const osg::Matrixd &matrix)
说明:设置观察矩阵
osg::Matrixd &getvViewMatrix()
说明:得到观察矩阵
void setViewMatrixAsLookAt(const osg::Vec3 &eye , const osg::Vec3 &center , const osg::Vec3 &up)
说明:使用lookat的观察方式设置观察矩阵
osg::Matrixd &getViewMatrixAsLookAt(const osg::Vec3 &eye , const osg::Vec3 &center , const osg::Vec3 &up , float lookDistance = 1.0f)
说明:使用lookat的观察方式得到观察矩阵
Matrixd getInverseViewMatrix() const
说明:得到观察矩阵的逆矩阵
void setRenderOrder(RenderOrder order , int orderNum = 0)
说明:设置渲染顺序,最后渲染会是顶层窗口
参数:order
渲染顺序,可以为PRE_RENDER,NESTED_RENDER,POST_RENDER
如果级别相同,具体指出渲染次序
RenderOrder getRenderOrder() const
说明:得到设置的渲染顺序,最后渲染会是顶层窗口
int getRenderOrderNum() const
说明:得到渲染次序数目
bool isRenderToTextureCamera() const
说明:是否渲染至纹理相机,如果渲染了则返回真
void setRenderTargetImplementation(RenderTargetImplementation impl)
说明:设置渲染实现方式
参数:impl
渲染目标实现方式,可以为一下值:FRAME_BUFFER_OBJECT,PIXEL_BUFFER_RTT,PIXEL_BUFFER,FRAME_BUFFER,SEPERATE_WINDWO
void setDrawBuffer(Glenum buffer)
说明:设置DrawBuffer
void setReadBuffer(Glenum buffer)
说明:设置ReadBuffer
void osg::Camera::attach(BufferComponent buffer , GLenum internalFormat)
说明:设置一些Buffer到特殊的用途,可输出Buffer到纹理
void createCameraThread()
说明:创建Camera线程
void setCameraThread(OperationThread *gt)
说明:设置Camera线程
设置已有的Camera线程
OperationThread *getCameraThread()
说明:得到设置好的Camera线程
void setGraphicsContext(GraphicsContex *contex)
说明:设置上下文
参数:contex
传入需要设置的上下文
setRenderer(osg::GraphicsOperation *rc)
说明:设置GraphicsOperation 可接受一个类的操作
传入设置的图形操作
void setRenderingCache(osg::Object *rc)
说明:设置渲染时的Cache,会在渲染子类图时使用
设置渲染时的Cache承接类
void setPreDrawCallback(DrawCallback *cb)
说明:设置Draw前的Callback
void setPostDrawCallback(DrawCallback *cb)
说明:设置Draw后的Callback
OpenThreads::Mutex *getDataChangeMutex() const
说明:得到数据改变的Mutex
camera 基本常识
openGL中camera类的设计以及使用
个人封装的一个Camera类
问题二十九:测试ray tracing中camera几个主要参数
Android Camera开发之基础知识篇
没有更多推荐了,1 OSG基础知识
? OSG是的缩写,于年诞生于以为滑翔机爱好者之手,为了对滑翔机的飞行进行模拟,对的库进行了封装,的雏形就这样诞生了,年遇到了同样喜欢滑翔机和计算机图形学的,从此加入了小组的开发并一直担任开发小组的组长。
? OSG不但有的跨平台的特性和较高的渲染性能,还提供了一系列可供程序开发者使用的功能接口,包括和数据文件的加载、纹理字体支持、细节层次()控制、多线程数据分页处理等。广泛应用于飞行仿真等领域,包括,及美国军方投资的仿真项目等
1.1 计算机绘图的基本知识
? 首先要先回顾一下,在显示世界中,我们是如何作画的。
? 在现实世界中,绘制一副画,我们需要的东西就是彩笔、白纸。通过选择不同颜色的彩笔,在白纸上移动,就可以将白纸上的不同的点描绘上不同的颜色,而所有这些点连接起来,从人的宏观视野看来,就构成了一副对人有意义的画作。
? 类比到计算机的实际中来。在计算机的世界里。作画的过程又是怎样的呢?
? 同样,绘制虚拟的图像,也需要“彩笔”和“白纸”。在计算机的世界里,“彩笔”就是之类的绘图函数,而“白纸”就是存储数据的内存。我们在内存中划分出一块区域,其中的数据就是对一个真实世界的模拟。一个数据就描述真实世界中一个点的属性。在我们作画前,他们都只有一个初始值,就像白纸在作画前只有白色一样。而在作画后,每一个数据都有了独特的意义,将整片数据连接在一起看,就是一副有意义的图景。作画的过程就是对内存中的每一个数据进行赋值的过程,相当于用彩笔给白纸上的一个点进行着色。选择不同的函数,可以画出不同的形状。
1.2 OSG程序框架
? 一个最简单的程序如下所示,当然在如果是在下面进行编辑的话要进行一些设置,要设置的和目录。
1 #include&osgDB/ReadFile&
3 #include&osgViewer/Viewer&
void main()
9 osgViewer::V
11 viewer.setSceneData(osgDB::readNodeFile("glider.osg"));
13 viewer.realize();
15 viewer.run();
osgViewer::Viewer viewer 申请了一个,可以理解为申请一个观察器,该观察可以查看模型
viewer.setSceneData(osgDB::readNodeFile("glider.osg")) 这里是设置观察器中的数据,换句话说,有了观察器,就可以添加模型了
viewer.realize() 这个语句表达的意思非常多,事实上可以定位到的realize函数,会发现里面的操作非常多,可以理解为这是在渲染前的最后一步,会检查和设置图形上下文,屏幕啊什么的,会让你以前的设置,对的设置都生效。
viewer.run(); 这一句的意思就是渲染了,如果要解释它的意思的话,可以用下面的几个语句来替代:
while(!viewer.done()){viewer.frame();}.意思也就是说,只要没有结束,那么就绘制它的每一个帧[]。
1.3 OSG简单模型控制
1.3.1 添加模型
在当中模型是使用和来装载在一起的,比如同时需要加入两个模型,模型了模型,各自是一个,那么可以使用以下语句来做到,首先使用一个然后同样,之后要。然后再把添加到当中就可以了。如图所示之间的关系。在这里要申明的是是的父类,在类中都有相应的方法可以转到对方,故与
是通用的,也可以被当作来用。
图 31 AB都加入到Group当中
简单示例代码如下:
1 #include&osgDB/ReadFile&
3 #include&osgViewer/Viewer&
5 #include&osg/Node&
void main()
11 osgViewer::V
13 osg::Group * root=new osg::Group();
15 root-&addChild(osgDB::readNodeFile("glider.osg"));
17 root-&addChild(osgDB::readNodeFile("osgcool.osg"));
19 viewer.setSceneData(root);
21 viewer.realize();
23 viewer.run();
则运行结果为:
图 32示例运行结果
1.3.2 删除结点
如果我们不需要某个结点了,比如图我们看那个小飞机很不爽,我们想把它从场景中删除掉。不知道于某种目的,反正现在要删除掉,可能是开始想看见它现在不想看见它了。可以通过方法,除多个孩子也可以通过方法,里面的参数有些需要索引值,有些需要结点本身的指针,读者可以自己尝试。这里要注意的是,如果要删除一个结点,那么该结点下的所有结点都会被删除。如果一个结点被加入到一个组中两次,那么这两次是分别存在的,删除一次还有另一次。删除操作不能说不是个危险的操作,有些时候,尤其在有移动结点等等混在一起时,删除操作有时候会发生一些比较奇怪的现象。在内存映象当中,如果一个模型被读取一次,而用了多次,那么所占用的空间是不会改变的。
1.3.3 隐藏模型与结点开关
? 隐藏模型
隐藏模型其实模型仍在渲染当中,因此损耗并未减少,只不过隐藏了而已,隐藏的确不是个什么好操作,但是有时候对小模型确实也很实用。可以设置隐藏与显示。
? 节点开关
在当中,专门有一个类来负责打开与关闭结点,该类名为,里面有相应的方法来控制它所管理的结点的打开与关闭。
两个方法都能控制模型的显示和隐藏,区别在于隐藏模型方法不会让模型在内存中消失,这样对于小的物体频繁的调用会节省一些时间,而对于有些大的模块在用一次以后可能很久再用第二次,这个时候用节点开关可以将模型销毁,再次使用再调入内存,以防止占用更多的资源。
1.3.4 超级指针
超级指针的机制,其实就是引用一个计数器,这个计数器会计算这个箱子被引用的次数,被别人引用一次这个计数器增加一,别人不用一次,即:释放一次,则计数器减一。当减至时,内存放掉不用。
们来看使用一个的三种方法对比一下:
? //方法一,最好的方法十分安全,也是中最常用的方法,多少版本它都没变
osg::ref_ptr&osg::Node&aNode(new osg::Node());
group-&addChild(aNode.get());
? //方法二,也是非常好的方法,有时候不适用,但也十分安全
group-&addChild(new osg::Node());
? //方法三,非常危险,但是令许多人无故铤而走险的方法
osg::Node*anotherNode=new osg::Node();
group-&addChild(anotherNode);
方法一:在时申请了一个的资源,这时在堆内引用该的计算器会被置。在时又引用了一次,会再加。在这两次引用都结束时,的资源就会被释放。
方法二:这个方法也是很实用的,但是无法引出的指针,也许在别处可以用到,事实上会经常用到。如果已经这样做了,得到指针也不是不可以的,可以使用来得到的指针,也可以使用方法来做这件事。
方法三:这个应该是最常用,但是最烂的方法了,原因在于如果在之后发生了错误,抛出了异常,谁来释放所占用的资源呢。而这个异常在后面被捕获,程序正常的走下去,而内存却没有被正常的放掉。
1.3.5 移动旋转缩放模型
移动旋转缩放其实都是对矩阵进行操作,在当中,矩阵可以当作一个特殊的结点加入到当中,而矩阵下也可以另入结点,而加入的结点就会被这个矩阵处理过,比如移动过旋转过缩放过。在中控制矩阵的类为。
osg::Matrix::translate
osg::Matrix::rotate
osg::Matrix::scale
1.4 基本几何图元
1.4.1 基本绘制方法
首先来看一些中的最基本的绘制路数。如果我们要绘制一个正方形,绘制有色彩,未贴图。首先我们必须要申请一个把这个加入到就可以了。在这个中要设置一些元素,最基本的是顶点颜色以及顶点的关联方式和法线就可以了。如图所示。
图 33几何体绘制过程
1.4.2 可绘制的图元
所有可绘制的图元包括:
? POINTS[点
? LINES[线
? LINE_STRIP[线带
? LINE_LOOP[闭合线段
? TRIANGLES[三角形
? TRIANGLE_STRIP[三角带
? TRIANGLE_FAN[三角扇
? QUADS[四方块
? QUAD_STRIP[四方块带
? POLYGON[多边形
在中设置直线线宽的专门有一个函数来管理,叫做,它本身属于状态与属性类别中的类。事实上也是从那里派生而来。所有设置状态的操作都与此类似。
1.4.3 内置几何类型
如同一样,同样有一套内置几何类型,这些几何类型都在类中,这些本身都可以本当成一个结点加入到中,然后再人中添加到里进行渲染。形状共有九种,分别为:盒子,胶囊形,组合型,圆锥形,圆柱形,高程形,有限面,球形,三角蒙皮。
内置几何类型的渲染过程如图所示
图 34基本几何图元的添加过程
这里要注意的是,一般的形状态都有特定的因素,比如有长宽,圆有半径,以及各个图形所画的精细度都需要指明,这些精细度在球这样的形状上意义还是十分巨大的。在中有专门指明精细度的类,名为:。以球为例,只需要规定,圆心,半径和精细度就可以画出该球。
1.5.1 交互过程
viewer的主要的功能是控制场景,它是场景的核心类,如果能响应键盘时得到,那么也可以从键盘的响应中控制整个场景。中有一个方法,名为就是专门做这件事情的。他会加入一个事件处理器。于是我们就想,一定要自己写一个事件处理器才行,这就必须要了解事件处理器的格式,只要有一个接口就可以了解它的格式,这个接口就是:,于是我们可以写一个类从该类公有派生出来,即::在里面处理好各种操作然后加入到当中,即:里面可以有参数这样就可以完成操作。
假如类是一个事件处理类,那么加入类可以这样理解,如图:
图 35事件A控制场景过程
1.5.2 事件类型与响应
   事件类型
   无事件。
1       鼠标某键按下,在上面代码行有用到。
   2       鼠标某键弹起。
DOUBLECLICK
 4       鼠标某键双击。
8       鼠标某键拖动。
MOVE      16       鼠标移动。
KEYDOWN    32       键盘上某键按下。
KEYUP      64       键盘上某键弹起。
    128     应该是鼠标每帧。没用过。
RESIZE      256     窗口大小改变时会有的事件。
    512     鼠标轮滚动。
PEN_PRESSURE
1024     手写板的某事件?
PEN_PROXIMITY_ENTER
2048   手写板的某事件?
PEN_PROXIMITY_LEAVE
4096   手写板的某事件?
CLOSE_WINDOWS    8192   关闭窗口。
QUIT_APPLICATION
  16384   退出程序。
         32768   用户定义。
至于为什么都用的次方,主要是因为它的二进制编码只有一位是一,判断事件时很好判断,只要年哪位是一就可以了。
1.5.3 PICK
pick主要是通过鼠标的点击来拾取一些物体,或者判断鼠标所点击的位置在哪里。Pick实现的思路如下图所示:
图 36pick事件流程
判断射线与中物体相交的方法为发出射线并相交。在中有库函数,他共有三个参数:第一个是屏幕坐标,第二个是屏幕坐标,第三个是存放被交的结点以及相交的坐标结点路径等等相关信息。
判断相交结点为我想要的那个结点:只需要判断存放相交射线交场景的结果集中有没有要用的结点就可以了。
1.6.1 MatrixManipulator
场景的核心管理器是,而漫游必须响应事件,比如鼠标动了,场景也在动。响应事件的类是。我们想把响应事件的类派生一个新类出来,这个类专门用来根据响应控制。这个类就是,这个类有一些设置矩阵的公共接口,有了这些接口就可以有效的控制了,根据不同的习惯,大家还会设置不同的控制方式,如同自带的几个操作器,操作都不尽相同。来看一下漫游的主要流程如图:
图 37一般的场景操作器
操作器必须从派生而来。有四个可以控制场景的重要接口:
1 virtual void setByMatrix(const osg::Matrixd&matrix)=0
virtual void setByInverseMatrix(const osg::Matrixd&matrix)=0
virtual osg::Matrixd getMatrix()const=0
virtual osg::Matrixd getInverseMatrix()const=0
四个矩阵接口可以有效的向来传递矩阵的相关信息。
1.6.2 碰撞检测
最简单的碰撞检测如下图所示:
图 38简单的碰撞检测原理图
TravelManipulator.dll中用到的就是如图所示的原理,黑三角形代表没有移动之的位置,控制移动的函数是,参数意思是要移动的相对于当前点的增量,在黑三角形没有移动时该函数在计算时先假设一点为移动后的点,而后通过连接这两个点,而后通过判断与场景的模型是否有交点来判定这个移动可不可以执行,如图所示,两者之间有个大盒子,是穿不过去的,所以只有保持在原地。就算没有这个盒子,移动后的新点又与地面在某种程序上有一个交点,这证明移动是不可行的。这可以防止用户穿过地板到达地下去。
1.6.3 路径漫游
使用文件的方法如下面示例
1 #include&osgDB/ReadFile&
3 #include&osgViewer/Viewer&
5 #include&osg/Node&
7 #include&osgGA/AnimationPathManipulator&
void main()
13 osgViewer::V
15 viewer.setSceneData(osgDB::readNodeFile("glider.osg"));
//申请一个操作器,参数为一个path文件。
19 osg::ref_ptr&osgGA::AnimationPathManipulator&amp=new osgGA::AnimationPathManipulator("glider.path");
//选择使用这个操作器。
23 viewer.setCameraManipulator(amp.get());
25 viewer.realize();
27 viewer.run();
我们可以用路径编辑器编辑文件,或者可以控制程序中的某个物体的运动轨迹然后保存为文件。
1.7 更新&回调
回调的意思就是说,你可以规定在某件事情发生时启动一个函数,这个函数可能做一些事情。这个函数就叫做回调函数,我们可以使用已有回调函数或者自定义回调函数。
? 使用已有回调
已有的回调的类型有很多种,一般很容易就想到的是,或者等
? 自定义回调
自定义回调为从一个回调类型派出生自己的回调,然后具有该种回调的特点等等。
NodeVisitor是一个极有用的类,可以访问结点序列,使用的方法大同小异,的工作流程如下图所示:
图 39NodeVisitor工作流程
在主结点之后,结点数据立即传至中去,应用函数,可以将数据定任一些操作,更多的操作还是需要硬性的制做与调用。
1.8 粒子系统初步
在中提供有专门的粒子系统工具,名字空间为,对经常使用的粒子模拟都做了专门的类,如:用于暴炸的模拟,用于火的模拟,用于爆炸后四散的颗粒模拟等等。
在中使用粒子系统一般要经历以下几个步骤:
第一步:确定意图(包括粒子的运动方式等等诸多方面)。第二步:建立粒子模版,按所需要的类型确定粒子的角度(该角度一经确定,由于粒子默认使用有所以站在任何角度看都是一样的),形状(圆形,多边形等等),生命周期等。第三步:建立粒子系统,设置总的属性,第四步:设置发射器(发射器形状,发射粒子的数目变化等),第五步:设置操作(旋转度,风力等等因素)。第六步:加入结点,更新。下图描述了各个部分是协调工作的方式:
图 310粒子系统各个部分是协调工作的方式
上图中各个部分所对应的类如下图所示
图 311粒子系统各部分对应的类
1.9 视口&LOD&Imposter
1.9.1 多视口
多视口的原理是自己创建所有的相机,包括主相机,这样我们可以随意的添加相机。
首先我们要创建视口必须有以下几件东西,第一,了解整个屏幕的分辩率有多大,这样可以分辩视口的大小,好分割开来。第二,上下文。我们必须自己手动的打开设置上下文。每个视口的数据也不一定非要与主视口的相同。但是矩阵一般是同步的。也就是说:主视口里有栋楼,从视口里可以是平面图什么的。了解整个屏幕的分辩率可以用这个类:意思是说系统接口,可以获得当前环境的各种信息。有一方法叫,可以得到分辩率。之后上下文了,里面可以设置窗口大小,缓存什么的,大多数的东西都在这里面设置。
LOD比起而言并非十分的常用,有个地方用的特别多,那就是把一个好好的模型加一个视矩压成一个模型,这个模型比以前的看来就是多了个视矩的控制,远了看不见,近了能看见。
在模型中加头结点的方式如下所示:
1 #include&osgDB/Registry&
3 #include&osgDB/ReadFile&
5 #include&osgDB/ReaderWri ter&
7 #include&osgDB/Wri teFile&
9 #include&osg/Node&
11 #include&osgViewer/Viewer&
int main()
17 osgViewer::V
//读取模型
21 osg::Node*node=osgDB::readNodeFile("fountain.osg");
//隐藏结点
25 node-&asGroup()-&getChild(0)-&setNodeMask(0);
27 viewer.setSceneDa ta(node);
//输出结点到free.os g中
31 osgDB::writeNodeFile(*(viewer.getSceneData()),"free.osg",osgDB::Registry
33 ::instance()-&getOptions());
1.9.3 Imposter
用动态图片来替换场景的实用技术:可以把它法做一样使用,只不过它
不是变模型变没有,而是使它换成一张图
示例代码如下:设置一个视矩,超过这个视距模型会变为一张动态图
1 #include&osgViewer/Viewer&
3 #include&osgGA/TrackballManipulator&
5 #include&osgSim/Impostor&
7 #include&osgDB/ReadFile&
int main(inta rgc,cha r**a rgv)
//申请viewer
15 osgViewer::V
//读取模型
19 osg::Node*node=osgDB::readNodeFile("ceep.ive");
//申请一个i mpos tor结点
23 osgSim::Impos tor*sim=new osgSim::I
25 //在到之内显示模型,之外显示贴图
27 sim-&addChild(node,0,50000);
29 sim-&setImpostorThreshold(1000);
31 osg::Group*root=new osg::G
33 root-&addChild(sim);
35 viewer.setSceneData(root);
37 viewer.realize();
39 viewer.run();
41 return 0;
1.10 文字&模型阴影
1.10.1 HUD
文字在场景中显示往往要经历以下几步:读取字体点阵信息转化为图像反走样最终图像。在反走样期间可以处理可种模糊效果,在最终图像形成时可以设置如何摆放。中有一个类,提供可很多文字显示的方法,比如
1 void setFont(Font*font=0)
3 //设置/得到字体,如setFont("fonts/SIMYOU.TTF");
5 void setFont(const std::string&fontfile)
7 const Font*getFont()const
9 //设置/得到字体显示的宽高
11 void setFontResolution(unsigned int width,unsigned int height)
13 unsigned int getFontWidth()const
15 unsigned int getFontHeight()const
17 //设置/得到文字的具体内容
等等,可以很方便的调用
1.10.2 阴影
OSG对阴影的支持也相当的好,可以很容易的写出简单的阴影效果,可以参考例子
OSG有一个专门的类来支持阴影效果,提供了很多接口,如:
1 void setBackdropType(BackdropType type)
3 //说明:设置阴影类型。
5 void setBackdropOffset(float offset=0.07f)
7 void setBackdropOffset(float horizontal,float vertical)
9 //说明:设置阴影的离开程度与方向
11 void setBackdropColor(const osg::Vec4&color)
13 //说明:设置阴影颜色
15 void setColorGradientMode(ColorGradientMode mode)
17 //说明:设置颜色映射方式,可以得到渐变效果
没有更多推荐了,当前位置:
文件名称:osgcode
所属分类:
标签属性:
上传时间:
文件大小:
提 供 者:
相关连接:
下载说明:
别用迅雷下载,失败请重下,重下不扣分!
osg程序设计教程书中例子所附带的源码,包括基本几何图元,视口,漫游等教程-code of the book tutorial of osg program
(系统自动生成,下载前可以参看下载内容)下载文件列表
压缩包 : osgcode.zip 列表
osgcode/第七章更新&回调/
osgcode/第七章更新&回调/18.callback/
osgcode/第七章更新&回调/18.callback/18.callback/
osgcode/第七章更新&回调/18.callback/18.callback.sln
osgcode/第七章更新&回调/18.callback/18.callback.suo
osgcode/第七章更新&回调/18.callback/18.callback/18.callback.vcproj
osgcode/第七章更新&回调/18.callback/18.callback/18.callback.vcproj.B420F0FCCC18402.Administrator.user
osgcode/第七章更新&回调/18.callback/18.callback/main.cpp
osgcode/第七章更新&回调/19.自定义CallBack/
osgcode/第七章更新&回调/19.自定义CallBack/19.自定义CallBack/
osgcode/第七章更新&回调/19.自定义CallBack/19.自定义CallBack.sln
osgcode/第七章更新&回调/19.自定义CallBack/19.自定义CallBack.suo
osgcode/第七章更新&回调/19.自定义CallBack/19.自定义CallBack/19.自定义CallBack.vcproj
osgcode/第七章更新&回调/19.自定义CallBack/19.自定义CallBack/19.自定义CallBack.vcproj.B420F0FCCC18402.Administrator.user
osgcode/第七章更新&回调/19.自定义CallBack/19.自定义CallBack/main.cpp
osgcode/第七章更新&回调/20.得到模型所有顶点/
osgcode/第七章更新&回调/20.得到模型所有顶点/20.得到模型所有顶点/
osgcode/第七章更新&回调/20.得到模型所有顶点/20.得到模型所有顶点.sln
osgcode/第七章更新&回调/20.得到模型所有顶点/20.得到模型所有顶点.suo
osgcode/第七章更新&回调/20.得到模型所有顶点/20.得到模型所有顶点/20.得到模型所有顶点.vcproj
osgcode/第七章更新&回调/20.得到模型所有顶点/20.得到模型所有顶点/20.得到模型所有顶点.vcproj.B420F0FCCC18402.Administrator.user
osgcode/第七章更新&回调/20.得到模型所有顶点/20.得到模型所有顶点/main.cpp
osgcode/第三章数据控制/
osgcode/第三章数据控制/5.添加模型/
osgcode/第三章数据控制/5.添加模型/5.添加模型/
osgcode/第三章数据控制/5.添加模型/5.添加模型.sln
osgcode/第三章数据控制/5.添加模型/5.添加模型.suo
osgcode/第三章数据控制/5.添加模型/5.添加模型/5.添加模型.vcproj
osgcode/第三章数据控制/5.添加模型/5.添加模型/5.添加模型.vcproj.B420F0FCCC18402.Administrator.user
osgcode/第三章数据控制/5.添加模型/5.添加模型/main.cpp
osgcode/第三章数据控制/6.隐藏模型/
osgcode/第三章数据控制/6.隐藏模型/6.隐藏模型/
osgcode/第三章数据控制/6.隐藏模型/6.隐藏模型.sln
osgcode/第三章数据控制/6.隐藏模型/6.隐藏模型.suo
osgcode/第三章数据控制/6.隐藏模型/6.隐藏模型/6.隐藏模型.vcproj
osgcode/第三章数据控制/6.隐藏模型/6.隐藏模型/6.隐藏模型.vcproj.B420F0FCCC18402.Administrator.user
osgcode/第三章数据控制/6.隐藏模型/6.隐藏模型/main.cpp
osgcode/第三章数据控制/7.结点开关/
osgcode/第三章数据控制/7.结点开关/7.结点开关/
osgcode/第三章数据控制/7.结点开关/7.结点开关.sln
osgcode/第三章数据控制/7.结点开关/7.结点开关.suo
osgcode/第三章数据控制/7.结点开关/7.结点开关/7.结点开关.vcproj
osgcode/第三章数据控制/7.结点开关/7.结点开关/7.结点开关.vcproj.B420F0FCCC18402.Administrator.user
osgcode/第三章数据控制/7.结点开关/7.结点开关/main.cpp
osgcode/第三章数据控制/8.移动,旋转,缩放模型/
osgcode/第三章数据控制/8.移动,旋转,缩放模型/8.移动,旋转,缩放模型/
osgcode/第三章数据控制/8.移动,旋转,缩放模型/8.移动,旋转,缩放模型.sln
osgcode/第三章数据控制/8.移动,旋转,缩放模型/8.移动,旋转,缩放模型.sln.old
osgcode/第三章数据控制/8.移动,旋转,缩放模型/8.移动,旋转,缩放模型.suo
osgcode/第三章数据控制/8.移动,旋转,缩放模型/8.移动,旋转,缩放模型.suo.old
osgcode/第三章数据控制/8.移动,旋转,缩放模型/8.移动,旋转,缩放模型/8.移动,旋转,缩放模型.vcproj
osgcode/第三章数据控制/8.移动,旋转,缩放模型/8.移动,旋转,缩放模型/8.移动,旋转,缩放模型.vcproj.8.00.old
osgcode/第三章数据控制/8.移动,旋转,缩放模型/8.移动,旋转,缩放模型/8.移动,旋转,缩放模型.vcproj.B420F0FCCC18402.Administrator.user
osgcode/第三章数据控制/8.移动,旋转,缩放模型/8.移动,旋转,缩放模型/8.移动,旋转,缩放模型.vcproj.PC-.Administrator.user
osgcode/第三章数据控制/8.移动,旋转,缩放模型/8.移动,旋转,缩放模型/main.cpp
osgcode/第三章数据控制/8.移动,旋转,缩放模型/UpgradeLog.XML
osgcode/第九章视口&LOD&多通道/
osgcode/第九章视口&LOD&多通道/23.前后左右视图/
osgcode/第九章视口&LOD&多通道/23.前后左右视图/UpgradeLog.XML
osgcode/第九章视口&LOD&多通道/23.前后左右视图/_UpgradeReport_Files/
osgcode/第九章视口&LOD&多通道/23.前后左右视图/_UpgradeReport_Files/UpgradeReport.css
osgcode/第九章视口&LOD&多通道/23.前后左右视图/_UpgradeReport_Files/UpgradeReport.xslt
osgcode/第九章视口&LOD&多通道/23.前后左右视图/_UpgradeReport_Files/UpgradeReport_Minus.gif
osgcode/第九章视口&LOD&多通道/23.前后左右视图/_UpgradeReport_Files/UpgradeReport_Plus.gif
osgcode/第九章视口&LOD&多通道/23.前后左右视图/前后左右视图/
osgcode/第九章视口&LOD&多通道/23.前后左右视图/前后左右视图.sln
osgcode/第九章视口&LOD&多通道/23.前后左右视图/前后左右视图.sln.old
osgcode/第九章视口&LOD&多通道/23.前后左右视图/前后左右视图.suo
osgcode/第九章视口&LOD&多通道/23.前后左右视图/前后左右视图.suo.old
osgcode/第九章视口&LOD&多通道/23.前后左右视图/前后左右视图/main.cpp
osgcode/第九章视口&LOD&多通道/23.前后左右视图/前后左右视图/前后左右视图.vcproj
osgcode/第九章视口&LOD&多通道/23.前后左右视图/前后左右视图/前后左右视图.vcproj.8.00.old
osgcode/第九章视口&LOD&多通道/23.前后左右视图/前后左右视图/前后左右视图.vcproj.B420F0FCCC18402.Administrator.user
osgcode/第九章视口&LOD&多通道/23.前后左右视图/前后左右视图/前后左右视图.vcproj.NiuNiu.FreeSouth.user
osgcode/第九章视口&LOD&多通道/24.多窗口视图/
osgcode/第九章视口&LOD&多通道/24.多窗口视图/24.多窗口视图/
osgcode/第九章视口&LOD&多通道/24.多窗口视图/24.多窗口视图.sln
osgcode/第九章视口&LOD&多通道/24.多窗口视图/24.多窗口视图.sln.old
osgcode/第九章视口&LOD&多通道/24.多窗口视图/24.多窗口视图.suo
osgcode/第九章视口&LOD&多通道/24.多窗口视图/24.多窗口视图.suo.old
osgcode/第九章视口&LOD&多通道/24.多窗口视图/24.多窗口视图/24.多窗口视图.vcproj
osgcode/第九章视口&LOD&多通道/24.多窗口视图/24.多窗口视图/24.多窗口视图.vcproj.8.00.old
osgcode/第九章视口&LOD&多通道/24.多窗口视图/24.多窗口视图/24.多窗口视图.vcproj.B420F0FCCC18402.Administrator.user
osgcode/第九章视口&LOD&多通道/24.多窗口视图/24.多窗口视图/24.多窗口视图.vcproj.NiuNiu.FreeSouth.user
osgcode/第九章视口&LOD&多通道/24.多窗口视图/24.多窗口视图/main.cpp
osgcode/第九章视口&LOD&多通道/24.多窗口视图/UpgradeLog.XML
osgcode/第九章视口&LOD&多通道/24.多窗口视图/_UpgradeReport_Files/
osgcode/第九章视口&LOD&多通道/24.多窗口视图/_UpgradeReport_Files/UpgradeReport.css
osgcode/第九章视口&LOD&多通道/24.多窗口视图/_UpgradeReport_Files/UpgradeReport.xslt
osgcode/第九章视口&LOD&多通道/24.多窗口视图/_UpgradeReport_Files/UpgradeReport_Minus.gif
osgcode/第九章视口&LOD&多通道/24.多窗口视图/_UpgradeReport_Files/UpgradeReport_Plus.gif
osgcode/第九章视口&LOD&多通道/25.结点输出到文件/
osgcode/第九章视口&LOD&多通道/25.结点输出到文件/25.结点输出到文件/
osgcode/第九章视口&LOD&多通道/25.结点输出到文件/25.结点输出到文件.sln
osgcode/第九章视口&LOD&多通道/25.结点输出到文件/25.结点输出到文件.suo
osgcode/第九章视口&LOD&多通道/25.结点输出到文件/25.结点输出到文件/25.结点输出到文件.vcproj
osgcode/第九章视口&LOD&多通道/25.结点输出到文件/25.结点输出到文件/25.结点输出到文件.vcproj.B420F0FCCC18402.Administrator.user
osgcode/第九章视口&LOD&多通道/25.结点输出到文件/25.结点输出到文件/free.osg
osgcode/第九章视口&L
暂无评论内容.
*快速评论:
和说明不符
不是源码或资料
纯粹是垃圾
*内  容:
*验 证 码:
搜珍网是交换下载平台,下载的内容请自行研究使用或咨询上传人.
资源属性分别代表:系统平台,开发平台,开发语言,文件格式四部分.
本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用进行解压.
如果您发现此软件无法下载,请稍后再次尝试;或者.
本站提供下载的内容为网上收集或会员上传提供,若无意中侵犯了您的版权,.
如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
如下载后发现下载的内容跟说明不相乎,可以联系本站的客服,经确认可以退回消费了的积分.
联系我们网站
·电话:(0)
搜珍网 www.dssz.com
All Rights Reserved.

我要回帖

更多关于 cad视口 的文章

 

随机推荐