三维渲染引擎设计与实践(四)

五、绘制几何对象和文字

帧缓存(Frame Buffer)为用户与显示设备交互的一个接口,将显示的画面抽象成一块可以进行读写操作的内存区域

帧缓存的每一个存储单元都对应显示屏上的一个像素。整个缓存空间对应当前屏幕上渲染的一帧

5.1几何元素的储存

顶点属性:空间坐标值、法线、颜色坐标、纹理坐标、雾坐标。

点的法线是在使用Phone或Gouraud模型时计算光照使用。

立即模式(immediate mode)      顶点数组(vertex array)       显示列表(display list)

顶点缓存对象(VBO)  像素缓存对象(Pixel Buffer Object,PBO)

显示列表是大部分OSG程序所使用的默认绘制优化行为,而顶点数组则是默认的几何体构建方式。

OSG同样将几何图元的类型划分为:点(GL_POINTS)、线段(GL_LINES)、线条带(GL_LINE_STRIP)、闭环线(GL_LINE_LOOP)、三角形(GL_TRIANGLES)、三角条带(GL_TRIANGLE_STRIP)、三角扇面(GL_TRIANGLE_FAN)、四边形(GL_QUADS)、四边形条带(GL_QUAD_STRIP)以及多边形(GL_POLYGON)

OpenGL的顶点属性设置原则是:每一个顶点只能对应一个位置坐标,每个纹理单元有一个纹理坐标值;此外,每个顶点至多关联一个法线坐标,一个颜色值,以及一个雾坐标等;但是多个顶点可以对应一个法线、颜色等属性信息。

5.1.4 范例 简易房屋

快速法线生成工具osgUtil::Smoothing Visitor

geometry:设置顶点setVertexArray

设置纹理坐标setTexCoordArray

      设置法线setNormalArray

PrimitiveSet表达图元组的信息,DrawArrays和DrawElementsUInt索引

追加一个图元组  addPrimitiveSet

     设置纹理图getOrCreateStateSet()->setTextureAttributeAndModes

     设置颜色setColorArray      设置颜色绑定形式setColorBinding

图元控制http://blog.csdn.net/sophistcxf/article/details/9096259

5.2几何元素的绘制和访问

时间: 2024-11-06 23:25:50

三维渲染引擎设计与实践(四)的相关文章

三维渲染引擎设计与实践(八)

8.2三维人机交互工具 osg实现了三维场景的漫游以及场景中三维对象的操纵. 8.2.1漫游器 osgGA::MatrixManipulator类 漫游器也是事件处理器GUIEventHandler的一种. viewer使用setCameraManipulator()函数来设置一个针对此视景器的漫游器. 8.2.2拖拽器 为要操纵的物体设置一个MatrixTransform父节点,通过改变这个父节点的变换矩阵的内容,进而改变作为操控对象的子节点的表现形式. osgManipulator库中拖拽器

三维渲染引擎设计与实践(六)

6.2纹理与纹理属性 6.2.1纹理的实现方法 纹理是一个数组的概念,其中每一个数据(RGB颜色以及Alpha值,或者其他系统及用户定义的类型)称作一个纹素(texel). 每一个映射通道称为一个纹理单元. 对于场景中的节点或几何体应用纹理属性时,通常需要预先指定每个顶点的纹理坐标,以便将图像正确贴至物体上.只有几何体可以设置纹理坐标,因此在设置节点的纹理之前,必须得到该节点子树中所有的几何体对象并设置他们的纹理坐标. geom->setCoordArray() Texture作为各种纹理表达方

三维渲染引擎设计与实践(三)

4.3.2 空间变换节点 世界坐标系是系统的绝对坐标系,在没有建立用户坐标系之前,所有的坐标都是以该坐标的原点来确定各自的位置的. OSG中的坐标系是X正向向右,Y轴正向向里,Z轴正向向上 OpenGL的坐标系是X正向向右,Y轴正向向上,Z轴正向向外 Transform公有继承Group类,AutoTransform公有继承Transform SRT   比例 scale 旋转rotate 平移transfom 4.3.3开关节点Switch 作用是:在场景运行的某一时刻,它的某些子节点被隐藏和

三维渲染引擎设计与实践(二)

4.3重要节点的功能实现 4.3.1空间变换节点 OpenGL中变换矩阵堆栈(Matrix Stacks) opengl中对象的控件变换是通过对模型视点(model-view)矩阵堆栈的操作完成的:从初始的全局世界坐标系开始,每当我们在某个空间坐标系下绘制完成一个物体以后,即记录当前的位置.姿态等变换信息(入栈),然后在变换后的坐标系下开始新的绘制,完成后返回到原先的变换位置(出栈),最终返回到最先的全局坐标系中. 方法一 直接设置空间变换矩阵的值:方法二  直接设置变换的平移.旋转和缩放值 S

三维渲染引擎设计与时间(一)

一.初始osg 三维渲染引擎:为了实现三维场景图形的结构管理和绘制而提供的一系列API的集合.包括构建层和交互层. Crystal Space.Java3D.Unreal-- osg库:构件场景图形的场景图形节点类.用作向量和矩阵运算的类:可绘制体和几何体类:用于描述和管理渲染状态的类:以及图形程序所需的典型功能类. osgDB库:用于2D和3D文件读写的插件类注册器,以及用于访问和读写这些插件的特定功能类:数据的动态分页调度机制 osgUtil库:实用工具库.包括场景图形数据统计和优化工具.渲

三维渲染引擎之——VTK

作为医学领域使用广泛的渲染类库,VTK本身也是基于OpenGL作为底层开发的,其渲染模式与另一个三维视觉类库OSG类似,其实本身这样的三维图形库基本都是来源于对OpenGL的封装. 通过VTK将科学实验数据如建筑学.气象学.医学.生物学或者航空航天学,对体.面.光源等等的逼真渲染,从而帮助人们理解那些采取错综复杂而又往往规模庞大的数字呈现形式的科学概念或结果.特别是医学方面,有时候我们需要根据仪器枯燥的数据抽象出一个具体的.可视化强的三维模型,以便于医生分析人体各个器官的细节,VTK真是基于这种

三维渲染引擎之——OSG

OpenSceneGraph(简称OSG)使用OpenGL技术开发,是一套基于C++平台的应用程序接口(API),它让程序员能够更加快速.便捷地创建高性能.跨平台的交互式图形程序.它作为中间件(middleware)为应用软件提供了各种高级渲染特性,IO,以及空间结构组织函数:而更低层次的OpenGL 硬件抽象层(HAL)实现了底层硬件显示的驱动.——来自百科 OSG封装了OpenGL的渲染方式,大大简化了图形绘制.渲染方式,优化了渲染性能,其特点总结如下: 性能 支持视图投影剔除(view f

三维渲染引擎专题--各种数格式总结

瓦片图层数据 OpenStreetMapImagery(免费开源地图服务,背后有某大公司支持) BingMapsImagery(微软Bing Maps Imagery REST API) GoogleEarthImagery (谷歌Google Earth Imagery API) ArcGisMapServerImageryProvider(ArcGIS MapServer) 矢量图层数据 GeoJSON TopoJSON KML GML CZML 高程图层数据 ArcGisImageServ

OSG(OpenSceneGraphic) 渲染引擎架构--整体认识

本文参考<<osg最长一帧>>, <<OpenSceneGraph三维渲染引擎编程指南>>, <<OpenSceneGraph三维渲染引擎设计与实践>> 整理而来,  感谢大牛们的精彩著作. 相比Ogre来说, Ogre代码很规范, 只是入门资料较少,如果能在学习之前能总体上对架构有个印象就好了, 免得盲人摸象啊, 不过,还好有OSG. 场景相关: Node, Geode, Group, Transform, LOD, Camera,