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

6.2纹理与纹理属性

6.2.1纹理的实现方法

纹理是一个数组的概念,其中每一个数据(RGB颜色以及Alpha值,或者其他系统及用户定义的类型)称作一个纹素(texel)。

每一个映射通道称为一个纹理单元。

对于场景中的节点或几何体应用纹理属性时,通常需要预先指定每个顶点的纹理坐标,以便将图像正确贴至物体上。只有几何体可以设置纹理坐标,因此在设置节点的纹理之前,必须得到该节点子树中所有的几何体对象并设置他们的纹理坐标。 geom->setCoordArray()

Texture作为各种纹理表达方式的基类,保存了一些通用的属性和方法,包括纹理的滤波方式(Fliter)、边界处的截取方式(Clamp)、明细层次(Mipmaps)

记录二维图像源的image类。

6.2.2纹理的分类

二维纹理,Texture2D;一维纹理,Texture1D;三维纹理,Texture3D可以理解为多层二维纹理所构成的一个立方体,而其中每一个纹素此时成为称为一个体素(voxel)。立方图纹理主要用于反射贴图或环境贴图的表达。

场景中的纹理设置;纹理的明细层次,

6.3属性的实现与访问

6.3.1将属性应用到场景

渲染属性(StateAttribute),包括纹理(Texture)以及其他OpenGL属性,其实现的关键均在于StateAttribute::apply()

6.3.2渲染状态集回调

类似于节点和可绘制体的回调机制,osg的渲染状态集也有更新和事件的回调结构,用于场景每一帧更新的过程中,或者产生人机交互事件时,自动调用用户子自定义的回调。osg::StateSet  setUpdateCallback           setEventCallback

6.4OSG着色语言

GLSL采用类似C语言的词法和语法格式,可编程图形处理器,顶点着色器、片元着色器和几何着色器。

顶点着色器可以用于替代顶点和法线变换、纹理坐标生成和变换、光照以及材质应用这些传统的管线命令;片元着色器用于替代纹理应用、雾化和像素汇总的工作;几何着色器则可以在图元装配过程中重新生成新的图元。

program类,是stateattribute的派生类,设置到一个节点或可绘制物体上,从而将着色器绑定到制定的场景对象。

shawder类,封装了顶点着色器、片元着色器和几何着色器的代码加载和编译功能。

uniform类,是着色器一致变量的接口类,一致变量使用户程序与着色器的主要交互接口。

 

7.1场景的观察与变换

(1)模型视点变换。

经过模型视点变换后,即可认为场景从世界坐标系转变到了相机坐标系(view coordinate system 眼坐标系)。nuv为vcs坐标系中的三个分量。

(2)投影变换

意味着之前已经变换到相机坐标系vcs的场景再次变换到投影坐标系。格式化设备坐标系(normalized device coordinate system NDCS)

(3)视口变换

是将投影变换得到的结果反映到指定的屏幕窗口上。窗口坐标系(Device Coordinate System,DCS设备坐标系)。

7.1.2相机节点

模型变换矩阵,由局部对象坐标系变为世界坐标系 Mmodel

视点变换矩阵又称观察矩阵,由世界坐标系变换到相机坐标系Mview

投影矩阵和窗口矩阵,合并为MVPW矩阵,实现三维场景向二维平面的映射,  

相机节点osg::Camera派生自Transforml类,  保存了大量相机设置参数,例如视口、投影矩形、背景颜色等

camera->addChild(node)

7.2图形设备接口

camera的setGraphicsContext()函数的工作是设置相机对应的图形设备对象。

7.2.2窗口与像素缓存

7.2.3渲染到纹理  P192

 

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

weixin151云匹面粉直供微信小程序+springboot后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值