OpenGL——纹理贴图技术_第1页
OpenGL——纹理贴图技术_第2页
OpenGL——纹理贴图技术_第3页
OpenGL——纹理贴图技术_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、OpenGL纹理贴图技术3.2 纹理缠绕 前面提到,纹理坐标应位于0-1之间。那么当纹理坐标大于这个值会出现什么情况呢? 我们可以对OpenGL进行设置,以决定当纹理坐标不位于这一区间时应采取的操作。我们可以指定两种操作:GL_CLAMP和GL_REPEAT。对于GL_CLAMP,超出纹理坐标的区域会使用纹理图像的边界颜色来代替,如图6.4-2所示。图6.4-2 GL_CLAMP 的工作方式 而GL_REPEAT方式则是对纹理坐标进行重置而得到重复的图像。观察图6.4-3,你就能很容易地发现这一点。图6.4-3 GL_REPEAT 的工作方式 可以调用glTexParameter设置缠绕方式:

2、 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,WrapMode);/在s方向上的缠绕方式 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,WrapMode);/在t方向上的缠绕方式 其中,WrapMode可取GL_CLAMP或者GL_REPEAT。4.纹理对象创建和使用文理对象 在OpenGL中,我们使用glGenTextures创建纹理对象: glGenTextures(Count:Integer;TexObjs:Pointer); 其中,Count是我们要创建的纹理数目,当我们只想创建一个纹

3、理时,只需调用varTexture:GLUint; . glGenTextures(1,Texture); 这样,Texture变量中就存储了我们创建的纹理的ID号。 创建之后,我们使用glBindTexture将创建的纹理绑定到当前纹理。这样所有的纹理函数都将针对当前纹理。 glBindTexture(Texture:GLUint); 这样,我们就可以调用glTexParameter、glTexImage2D等函数来设置这个纹理对象了。删除纹理对象 在纹理资源使用完毕后(一般是程序退出或场景转换时),一定要删除纹理对象,释放资源。 调用 glDeleteTextures(Count:Inte

4、ger;TexObj:Pointer); 来删除纹理对象。例如 glDeleteTextures(1,Texture);5. 多贴图纹理 多贴图纹理(Mip Mapping)为一个纹理对象生成不同尺寸的图像。在需要时,根据绘制图形的大小来决定采用的纹理等级或者在不同的纹理等级之间进行线性内插。使用多贴图纹理的好处在于消除纹理躁动。这种情况在所绘制的景物离观察者较远时常常发生(如图6.6-1和6.6-2)。由于多贴图纹理现在的渲染速度已经很快,以至于和普通纹理没有什么区别,我们现在一般都使用多贴图纹理。图6.6-1 GL_LINEAR滤镜下的远景图6.6-1 使用多纹理贴图的远景 使用多贴图纹理

5、并不麻烦。首先,我们需要创建不同等级(尺寸)的纹理图片。我们需要调用n次glTexImage2D函数,生成不同等级的纹理贴图。例如:glTexImage2D(GL_TEXTURE_2D,0,3,8,8,0,GL_RGB,GL_UNSIGNED_BYTE,Pixels); glTexImage2D(GL_TEXTURE_2D,1,3,4,4,0,GL_RGB,GL_UNSIGNED_BYTE,Pixels); glTexImage2D(GL_TEXTURE_2D,2,3,2,2,0,GL_RGB,GL_UNSIGNED_BYTE,Pixels); glTexImage2D(GL_TEXTURE_

6、2D,3,3,1,1,0,GL_RGB,GL_UNSIGNED_BYTE,Pixels); 这些函数调用的第二个参数表示当前纹理的等级。0级的分辨率最大。之后,每一级的分辨率是上一级分辨率的一半。这样的函数调用应一直进行下去,直至图像的高度和宽度都为1。 但有时候,这样做总并不是很方便。我们可以借助一个glu函数帮我们自动生成这些多贴图纹理。只需要把生成纹理图像的函数调用由glTexImage2D改为gluBuild2DMipMaps即可: gluBuild2DMipMaps(GL_TEXTURE_2D,3,Bit.Width,Bit.Height,0,GL_RGB,GL_UNSIGNED_BYTE,Pixels); 此外,还必须把纹理的滤镜改为MIP_MAP滤镜。例如: glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_M

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论