博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
三维渲染引擎设计与实践(五)
阅读量:4511 次
发布时间:2019-06-08

本文共 1322 字,大约阅读时间需要 4 分钟。

5.2几何元素的绘制和访问

Drawable类是可绘制体的容纳者,它可以保存和渲染由顶点数据构成的几何体、位图、文字等。一个或多个Drawable可绘制对象由一个Gerde叶节点进行管理,并向用户提供了一系列操作接口。

数据的更新与显示:动态地改变几何体的顶点、法线、颜色等数据的内容是一种重要而常见的场景动画实现方法。最简单的顶点数据更新方法是预先获取setVertxArray()所用的数组数据,并对其进行更新。显示列表中的数据不能动态进行修改(setUseDisplayList)。需要调用dirtyDisplayList()来强制刷新。

慢速通道和VBO的数据渲染方式。更适合实时更新数据的VBO模型构件几何体。

5.2.3几何体的更新回调

场景节点的更新回调使用osg::NodeCallback。几何体的更新回调使用osg::Drawable::UpdateCallback。几何体的事件回调,当一个新的人机交互事件发生时,都会触发事件回调并执行用户自定义的回调函数内容。osg::Drawable::EventCallback

设置setUseVertexBufferObjects(true),以便开启VBO来渲染几何体。

仿函数  仿函数遍历几何体,使用AttributePrinter的派生类取得这个对象的所有顶点数组数据

5.3 位图的显示

5.3.1图像和图像的绘制

OSG中使用Image类来封装一个OpenGL的图像对象。

对于一般的二维图像来说,其分辨率在S、T方向为一个无符号整数值,而R方向为1;三维图像则在R方向也存在分辨率数据。

定义一个派生自Drawable的DrawPixels类,实现位图的绘制。

5.4文字的显示

矢量字体

osgText包含了二维、三维文字的绘制、排版功能,以及多字符编码的处理机制,采用在四边形面上绘制纹理的形式,将文字数据绘制到三维空间中。

二维文字的表达工具为osgText::Text类,它派生自osg::Drawable可绘制体类。三维文字的表达手段osgText::Text3D类, 。

和其他可绘制体(几何体、位图)相同,OSG中文字的渲染同样是通过drawImplementation()函数实现。

多字节字符,宽字符wchar_t的一个值就代表一个unicode字符

osg提供osgText::String来完成Unicode编码的保存和显示

 

六、设置纹理和渲染属性

渲染状态量:光照、材质、雾效、图像融合(blend)、多边形偏移(polygon offset)

6.1.2节点的渲染状态集合

osg采用包围层次的形式来构建不同层次、不同功能的场景节点,每一个节点都可以保存多种类型的渲染属性和模式;而父子节点之间则存在多种渲染状态的继承关系。我们将一个节点所赋予的多个渲染状态,包括各种属性(attrubute)和模式(mode),称为一个渲染状态集合,并使用StateSet类来表示。

osg::node setStateSet

6.2纹理与纹理属性

转载于:https://www.cnblogs.com/hanmolabi/p/7231632.html

你可能感兴趣的文章
二叉树的基本定义域操作代码
查看>>
TCP协议中的三次握手和四次挥手(图解)
查看>>
计算两个日期之间的差
查看>>
利用Django徒手写个静态页面生成工具
查看>>
贴给小程序(1) --查找第一个0值
查看>>
java第一讲
查看>>
ubuntu18.04初始化配置
查看>>
【Tarjan】通讯
查看>>
【贪心】P3942 将军令 && P2279 消防局的设立
查看>>
HDU 2476 String painter
查看>>
[转]粤语学习
查看>>
JAVA开发常用类(四)
查看>>
sql索引优化 (从网上学习的时候总结的)
查看>>
Spring中配置数据源的4种形式
查看>>
Nuget 相关
查看>>
制作类似DataGrid自定义控件
查看>>
XML的解析和保存
查看>>
(算法)变成1需要的最小步数
查看>>
CIDR合并
查看>>
OC实现单选和多选按钮
查看>>