osgblendequation例子
来源:互联网 发布:美工刀片安装 编辑:程序博客网 时间:2024/05/16 12:49
先来回忆一下opengl中的Blend。
glEnable(GL_BLEND)启用混合。
片段的值在写入帧缓存之前,是需要与帧缓存中原有的值进行计算的,默认的计算将量值相加,然后截
取[0,1]范围内。
但是这个组合算法我们可以控制,应该说在OpenGL固定管线中我们有多种选择,通过glBlendFunc这个函
数可以设置组合的方式,glBlendFuncSeparate函数可以对A值单独的指定。
glBlendEquation函数可以选择其他的数学方式进行组合,相加、相减、反向相减、最大值、最小值、逻
辑运算(十六中呢)。glBlendEquationSeparate同样可以对A值进行单独的指定。
glBlendFunc、glBlendEquation这两个函数在混合中一起使用,第一个设置片段和帧缓存的权值,第二
个设置两者的计算方式。
回到例子中,读取了cessnafire.osgt这个模型,然后设置他的状态StateSet,主要是BlendEquation,
OpenGL是一个状态机,在OSG中所有的OpenGL状态都继承StateAttribute,然后设置StateSet开关(OSG
的state类封装了所欲的OpenGL状态,最终改变的是State这个类)。因此,BlendEquation继承自
StateAttribute。我们看看BlendEquation类:
enum Equation {
RGBA_MIN = GL_MIN,
RGBA_MAX
= GL_MAX,
ALPHA_MIN =
GL_ALPHA_MIN_SGIX,
ALPHA_MAX = GL_ALPHA_MAX_SGIX,
LOGIC_OP = GL_LOGIC_OP,
FUNC_ADD
= GL_FUNC_ADD,
FUNC_SUBTRACT = GL_FUNC_SUBTRACT,
FUNC_REVERSE_SUBTRACT = GL_FUNC_REVERSE_SUBTRACT
};
定义了一个枚举,就是之前我们提过的片段和帧缓存的计算方式。Extensions计算了一些扩展支持,
通过键盘事件切换
osg::BlendEquation::FUNC_ADD,
osg::BlendEquation::FUNC_SUBTRACT,
osg::BlendEquation::FUNC_REVERSE_SUBTRACT,
osg::BlendEquation::RGBA_MIN,
osg::BlendEquation::RGBA_MAX,
osg::BlendEquation::ALPHA_MIN,
osg::BlendEquation::ALPHA_MAX,
osg::BlendEquation::LOGIC_OP
这几种方式,关键事件我们以后会进行研究。
stateset->setRenderingHint(osg::StateSet::TRANSPARENT_BIN);
设置节点的渲染顺序,最后渲染。
关于 setRenderBinDetails与 setRenderingHint 的关系,也可以这样解释:
stateSet->setRenderingHint ( OPAQUE_BIN );
stateSet->setRenderingHint ( TRANSPARENT_BIN );
分别等价于:
stateSet->setRenderBinDetails( 0, “RenderBin” );
stateSet->setRenderBinDetails( 10, “DepthSortedBin” ); (《最长的一帧》)
- osgblendequation例子
- 例子
- 例子
- 例子
- 例子
- & + 例子
- / 例子
- 例子
- 例子
- 例子
- 例子
- 例子
- 例子
- 例子
- 例子
- 例子
- 例子
- 【例子】
- #读书笔记#松本行弘的程序设计·第一章
- 纠结的List remove
- 博客简介
- 17(39)---windows internal 第6版 mark david alex
- 基于Eht 开发框架 DataGrid 列分组,翻页,添加代码、列拖拽及DataPickter的实现
- osgblendequation例子
- static用法小结
- 王垠:完全用Linux工作
- make -d
- 链表面试题集锦
- ABAP--如何快速从BSEG读取数据
- .NET快捷键
- Transformations
- 计算广告学习笔记 5.1 搜索广告与demand技术 探索与利用