基于opengl的纹理线图技术.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于opengl的纹理线图技术 0 纹理时文图ls 除了基本的点、线、多边形的绘制函数外,还提供了复杂的三维物体(球、锥形、多面体、陶瓷等)以及复杂的曲线和曲线绘制函数。利用开放网格函数库可以做各种三维物体的绘制。为了提高三维物体的真实模拟,需要引入纹理绘制技术,以增强3d场景的三维绘制精度,提高3d场景的渲染速度。本文将着重介绍以C语言和OpenGL相结合以实现三维物体的纹理贴图过程, 讲述OpenGL纹理贴图的基本步骤以及相关技术要点。 1 打印纹理图案 1.1 生成符合机理的特性 将纹理贴图应用到几何图形的第一个必要步骤就是将纹理载入到内存之中。已经载入之后, 这个纹理就成为当前的纹理状态的一部分。 载入纹理的函数有3种, 分别对应于一维、二维和三维纹理, 如下: 函数参数说明: 上述3个函数实际上只是同1个根函数glTextImage的不同类型, OpenGL支持一维、二维和三维的纹理贴图, 使用对应的函数来载入纹理, 并将其作为当前纹理。使用上述函数时, OpenGL从data参数所指向的位置复制纹理信息。 3个函数的target参数分别是GL TEXTURE 1D、GL TEXTURE 2D或GL TEXTURE 3D。 Level参数指定了这些函数所载入的mipmap层。对于非mipmap的纹理, 这个参数设置为0。 Information参数告诉OpenGL希望在每个纹理单元中存储多少颜色成分。 Width、height和depth参数指定了被载入纹理的宽度、高度和深度。这些值必须是2的整数次方。 Border参数允许为纹理贴图指定一个边界宽度。 Format和type参数描述了纹理图像数据的格式和数据类型。 1.2 带风压备的使用 纹理对象是用来存储纹理数据的, 以备随时使用。创建了纹理对象, 就能够将多个纹理一次性载入内存, 以便场景绘制期间随时引用其中的任何一个纹理。 1.2.1 用glgg-pct函数生成不重复使用一个真理名 使用纹理对象, 首先需要生成纹理名称。纹理名可以是一个非0的无符号整数, 为确保不重复使用同一个纹理名, 可以调用glGenTextures () 函数: 参数n指定了将有多少个纹理名被生成并存入textureNames数组中。 1.2.2 创建和使用纹理对象 生成纹理名之后还必须将纹理名“绑定”到纹理数据上, 可以调用glBindTexture () 函数来实现此项任务: 1.3 基于最邻近过滤和线性过滤的的热压 根据一个拉伸或收缩的纹理贴图计算颜色片段的过程称为纹理过滤。使用OpenGL的纹理参数函数, 可以设置放大和缩小过滤器。这两种过滤器的参数名分别是GL TEXTURE MAG FILTER和GL TEXTURE MIN FILTER。可以为这两种过滤器参数选择两种基本的纹理过滤器GL NEAREST和GL LINEAR, 它们分别对应于最邻近过滤和线性过滤。最邻近过滤是最简单和最快速的过滤方法。纹理坐标总是根据纹理单元进行计算和测量。无论纹理坐标落入哪个纹理单元, 这个纹理单元的颜色就作为这个片段的纹理颜色。可以使用下面函数为放大和缩小过滤器设置纹理过滤器: 线性过滤并不是把最邻近的纹理单元取到纹理坐标中, 而是把这个纹理坐标周围的纹理单元的加权平均值应用到这个纹理坐标上。为放大和缩小过滤器设置线性过滤的函数如下: 1.4 envi函数 OpenGL允许通过纹理模式来指定如何对纹理图颜色进行处理。对于每个纹理, 可以调用glTexEnvi () 函数来从4个纹理模式中进行选择: Target参数必须等于GL TEXTURE ENV, 同时也必须将pname参数值设为GL TEXTURE ENV MODE, 告诉OpenGL将指定纹理如何与帧缓存中的颜色进行混合。Param参数可以设为表1中所列出的任何一个值。 1.5 坐标的纹理坐标 1.5.1 纹理坐标系s,t、r和q 当绘制场景时, 必须为每一个顶点指定相应的纹理坐标。纹理坐标用于确定纹理图的每一个texel对应于物体的那个部分。纹理坐标被指定为浮点值, 范围从0.0至1.0。纹理坐标被命名为s、t、r和q (类似于顶点坐标x、y、z和w) , 支持从一维至三维的纹理坐标。Q坐标对应于几何图形的w坐标。是一个缩放因子, 作用于其余纹理坐标。使用glTexCoord () 函数指定一个纹理坐标, 有3种形式: 纹理坐标使用上述函数应用到几何物体的每个顶点, 然后OpenGL根据需要对纹理进行扩大或收缩, 将纹理贴图到几何图形之上。 1.5.2 生成二维纹理 尽管纹理坐标的取值范围通常为0.0至1.0, 但是也可以被赋予此范围之外的值。这会导致纹理的平铺和夹持处理。当指定了0~1范围之外的纹理坐标时, 可以告诉Open

文档评论(0)

lgjllzx + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档