第七章_OpenGL纹理映射

第七章_OpenGL纹理映射

ID:38423092

大小:1.46 MB

页数:41页

时间:2019-06-12

第七章_OpenGL纹理映射_第1页
第七章_OpenGL纹理映射_第2页
第七章_OpenGL纹理映射_第3页
第七章_OpenGL纹理映射_第4页
第七章_OpenGL纹理映射_第5页
资源描述:

《第七章_OpenGL纹理映射》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第七章OpenGL纹理映射前面我们学习了基本的三维图形的程序设计,但物体表面的细节(比如带有木纹的桌面等)依靠现有的技术还不能表现出来,因而三维物体看起来不是很真实。如何来表现物体表面的细节就纹理映射技术要研究的内容。就是在三维图形中,纹理映射技术应用很广,尤其描述具有真实感的物体。比如绘制一面砖墙,就可以用一幅真实的砖墙图像或照片作为纹理贴到一个矩形上,砖墙就很逼真。如果不用纹理映射的方法,则墙上的每一块砖都必须作为一个独立的多边形来画,这样会增加许多的计算量。纹理映射也常常运用在其他一些领域,如飞行仿真中常把一大片植被的图像映射到一些大多边形上用以表示地面,或用大理石、木材、布

2、匹等自然物质的图像作为纹理映射到多边形上表示相应的物体。  纹理映射有许多种情况。例如,任意一块纹理可以映射到平面或曲面上,且对光亮的物体进行纹理映射,其表面可以映射出周围环境的景象;纹理还可按不同的方式映射到曲面上,一是可以直接画上去(或称贴花法),二是可以调整曲面颜色或把纹理颜色与曲面颜色混合。纹理不仅可以是二维的,也可以是一维和三维。7.1基本概念1、纹理映射技术能够模拟物体表面颜色细节或几何细节的计算机图形学技术称为纹理映射技术(texturemappingtechnology)。利用纹理映射技术,可以在不增加场景绘制复杂度,不显著增加计算量的前提下,大幅度提高图形的真实感

3、。2、纹理及纹理空间待映射的图形称为纹理;纹理中某点也是有位置的,一般用坐标来标识,对应的坐标系称为纹理坐标空间。3、纹理函数纹理函数是关于纹理坐标的函数。函数值一般为光的亮度值。在计算机中处理时,一般用RGB三个分量来表示。当纹理函数的定义域为一维、二维、三维时,对应的纹理函数称为一维纹理函数、二维纹理函数、三维纹理函数。4、纹理函数来源(1)数学方式描述的纹理函数示例1(长峰波函数):示例2(棋盘):(2)数字图像二维数组,image[M][N],M*N表示图像的大小,数组中每个元素的值为光亮度。-41-(3)两类纹理函数的转化也就是数字图像(离散)与数学公式(连续)之间的转化

4、。通过采样,连续函数可变成离散的样本阵列;通过双线性插值,离散的数组可转化为连续的函数。7.2纹理映射的基本步骤定义纹理绘制场景指定映射方式滤波图7-1纹理映射步骤第六章中我们学到了混合,纹理映射方法中也要用到混合,目的是把原来的颜色和将要画上去的颜色经过某种方式处理后得到一种新的颜色。这里把将要画上去的颜色称为源颜色,也称为片元,把当前存储在帧缓存中的颜色称为目标颜色。OpenGL会把源颜色和目标颜色各自取出,并分别乘以一个系数(不透明度)。源颜色乘以的系数称为“源因子”(源颜色的不透明度),目标颜色乘以的系数称为“目标因子”(目标颜色的不透明度),然后把两个乘积的结果相加,这样

5、就得到了新的颜色(也可以不是相加,新版本的OpenGL可以设置运算方式,包括加、减、取两者中较大的、取两者中较小的、逻辑运算等,这些可以通过函数glBlendEquation()来实现)。7.3指定纹理OpenGL提供了三个函数来指定纹理,glTexImage1D()用用来指定一维纹理, glTexImage2D()用于指定二维纹理,glTexImage3D()用于指定三维纹理。本章我们主要研究二维纹理。指定二维纹理映射的函数是:voidglTexImage2D(GLenumtarget,GLintlevel,GLintinternalFormat,GLsizeiwidth,gls

6、izeiheight,GLintborder,GLenumformat,GLenumtype,constGLvoid*pixels);现详细说明其中的参数:(1)参数target的取值为 GL_TEXTURE_2D ;(2)参数level表示多级分辨率的纹理图像的级数,若只有一种分辨率,则level设为0。(3)参数internalFormat指定了纹理存储在显存中的内部格式,取值如表7-1所示。通常取值为:GL_RGB、GL_RGBA。为兼容OpenGL1.0,internalFormat可以取值1,2,3,4分别对应常量 LUMINANCE,LUMINANCE_ALPHA, R

7、GB, RGBA.表7-1纹理内部格式格式注解GL_ALPHAAlpha值-41-GL_DEPTH_COMPONENT深度值GL_LUMINANCE灰度值GL_LUMINANCE_ALPHA灰度值和Alpha值GL_INTENSITY亮度值GL_RGBRed,Green,Blue三原色值GL_RGBARed,Green,Blue和Alpha值(4)参数width和height给出了纹理图像的长度和宽度,参数border为纹理边界宽度,它通常为0,width和heigh

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。