Learning OSG programing---osgScribe

  Scribe可以翻译为素描,抄写等。本例通过在模型表面添加一层素描,来显示模型的骨架。

  关键代码:

     osg::ref_ptr<osg::StateSet> stateset = new osg::StateSet;
osg::ref_ptr<osg::PolygonOffset> polyoffset = new osg::PolygonOffset;
polyoffset->setFactor(-1.0f);
polyoffset->setUnits(5.0f);
osg::ref_ptr<osg::PolygonMode> polymode = new osg::PolygonMode;
polymode->setMode(osg::PolygonMode::FRONT_AND_BACK,osg::PolygonMode::LINE);
stateset->setAttributeAndModes(polyoffset,osg::StateAttribute::OVERRIDE|osg::StateAttribute::ON);
stateset->setAttributeAndModes(polymode,osg::StateAttribute::OVERRIDE|osg::StateAttribute::ON); osg::ref_ptr<osg::Material> material = new osg::Material;
material->setAmbient(osg::Material::FRONT_AND_BACK,osg::Vec4f(1.0,0.0,1.0,1.0));
stateset->setAttributeAndModes(material,osg::StateAttribute::OVERRIDE|osg::StateAttribute::ON);
13   stateset->setTextureMode(0,GL_TEXTURE_2D,osg::StateAttribute::OVERRIDE|osg::StateAttribute::OFF);
14   decorator->setStateSet(stateset);

  这段代码主要设置用于绘制素描效果的属性集stateset。属性集的设置主要是三个方面:

  PolygonOffest polyoffset用于设置素描模型和加载模型之间的偏移,避免深度检测过小,出现的闪烁现象。这个类主要是封装了OpenGL中的glPolygonOffset函数,其成员函数和说明可见于这里。关于OpenGL中的glPolygonOffset函数的使用说明可见这里。分析这个例程的对象关系图,如下所示:

  这个例程的对象关系还是很清晰的,通过对Scribe装饰对象decorator设置其状态集,设置PolygonOffset避免闪烁,设置PolygonMode将装饰器设置为线模型,通过设置materal可更改线框的颜色,材质,纹理,各种光照反射效果等。最后将装饰器节点和加载模型共同添加到根节点,显示线框效果:

最新文章

  1. .Net使用Newtonsoft.Json.dll(JSON.NET)对象序列化成json、反序列化json示例教程
  2. lnmp配置Yii2规则
  3. wordpress视频教程
  4. nginx 反向代理TCP mysql
  5. EF架构~真正被封装的排序方法,支持多列排序
  6. mysql Field xxx doesn&#39;t have a default value STRICT_TRANS_TABLES(存储引擎启用严格模式,非法数据值被拒绝)
  7. jmeter随笔(1)-在csv中数据为json格式的数据不完整
  8. 使用虚拟机在ubuntu下搭建mongoDB开发环境和简单增删改查操作
  9. CentOS6 下MySQL option file
  10. ORA-12571 : TNS : 包写入程序失败
  11. Centos 7中 vim 中文乱码
  12. Dynamic Programming (DP) 问题总结
  13. 使用Bugfree不应有的坏习惯
  14. java编程中容易犯2的细节汇总
  15. Cairo-Dock 系统关机无效
  16. 利用PHPExcel导出Excel并设置Excel格式以及数据源
  17. Nunit的尝试
  18. linux中模糊查找文件
  19. layer 关闭当前弹出层
  20. SprintBoot 1.2.8 入门

热门文章

  1. Codeforces 1110E (差分)
  2. [洛谷P1552] [APIO2012]派遣(左偏树)
  3. JVM(2)之 JAVA堆
  4. linux性能分析工具Swap
  5. linux性能相关的各个环节
  6. Linux设置数据库自动备份
  7. linux篇—Nginx反向代理负载均衡
  8. Codeforces Round #420 (Div. 2) - B
  9. contos7安装jdk1.8和tomcat8
  10. Python3.5-20190529-自动登录百度