基于opengl的纹理贴图技术

基于opengl的纹理贴图技术

ID:33575932

大小:60.50 KB

页数:9页

时间:2019-02-27

基于opengl的纹理贴图技术_第1页
基于opengl的纹理贴图技术_第2页
基于opengl的纹理贴图技术_第3页
基于opengl的纹理贴图技术_第4页
基于opengl的纹理贴图技术_第5页
资源描述:

《基于opengl的纹理贴图技术》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、基于OpenGL的纹理贴图技术第10卷第3期2011q3月vOl.lONO.3Mar2Oll基于OpenGL的纹理贴图技术杨键,张敏(1•四川大学锦城学院,四川成都610072;2.西南民族大学,四川成都610031)摘要:纹理贴图是增强3D场景真实感的技术基础,主要介绍了基于OpenGI的纹理贴图技术,包含实现OpenGI纹理贴图的基本步骤,以及纹理贴图各环节的技术要点,对OpenGLMip贴图的原理和实现方法也进行了简要的介绍.关键词:纹理贴图;3D;真实感;OpenGL;Mip贴图中圈分类号:

2、TP391.4文献标识码:A文章编号:1672—7800(2011)0一0169一030引言OpenGL图形库除了提供基本的点,线,多边形的绘制函数外,还提供了复杂的三维物体(球,锥,多面体,茶壶等)以及复杂曲线和曲面绘制函数,能够利用OpenGL函数库实现各种三维物体的绘制,为实现三维物体的真实模拟必须引入纹理贴图技术,以便增强三维场景绘制的真实感,并能提高三维场景的渲染速度•本文将着重介绍以C语言和OpenGI相结合以实现三维物体的纹理贴图过程,讲述OpenGL纹理贴图的基本步骤以及相关技术要点

3、.1纹理贴图1.1载入纹理将纹理贴图应用到儿何图形的第一个必要步骤就是将纹理载入到内存之中.已经载人之后,这个纹理就成为当前的纹理状态的一部分.载入纹理的函数有3种,分别对应于--维,二维和三维纹理,如下:(1)一维纹理定义函数.voidglTexlmage】D(GLe—numtarget,GLintlevel,GLintcomponents,GLsizeiwidth,Glintborder,GIenumformat,GLenumtype,constGI一voidpixels):⑵二维纹理定义函数v

4、oidglTexlmage2D(GLe一numtarget,Glintlevel,Glintcomponents,GLsizeiwidth,GLsizeiheight,GLintborder,GLenumformat,GLenumtype,eonstGLvoidpixels);⑶三维纹理定义函数voidglTexlmage3D(GIe—numtarget,GLintlevel,GLintcomponents,GIsizeiwidth,GLsizeiheight,GLsizeidepth,Glintb

5、order,Glenumfor一mat,GLenumtype,constGLvoidpixels);函数参数说明:上述3个函数实际上只是同1个根函数glTextlmage的不同类型,OpenGI支持一维,二维和三维的纹理贴图,使用对应的函数来载入纹理,并将其作为当前纹理.使用上述函数时,0penGL从data参数所指向的位置复制纹理信息.3个函数的target参数分别是GI—TEXTURE一1D,GLTEXTURE2D或GLTEXTURE3D.Level参数指定了这些函数所载入的mipmap层.对丁

6、非mipmap的纹理,这个参数设置为0.Information参数告诉OpenGL希望在每个纹理单元中存储多少颜色成分.Width,height和depth参数指定了被载入纹理的宽度,高度和深度.这些值必须是2的整数次方.Border参数允许为纹理贴图指定一个边界宽度.Format和type参数描述了纹理图像数据的格式和数据类型.1.2纹理对象纹理对象是用来存储纹理数据的,以备随时使用.创建了纹理对象,就能够将多个纹理一次性载人内存,以便场景绘制期间随吋引用其中的任何一个纹理.1.2.1纹理名字的牛

7、成使用纹理对象,首先需要生成纹理名称.纹理名可以是一个非0的无符号整数,为确保不重复使用同一个纹理名,可以调用glGenTextures()函数:VoidglGenTextures(GIsizein,GLuint*texture一Names);作者简介:杨键(1981一),男,四川成都人,硕士,四川大学锦城学院助教,研究方向为图形图像处理;张敏(1983—),男,四川成都人,硕士,西南民族大学助教,研究方向为嵌入式系统.9■170?软件导刊2011正参数n指定了将有多少个纹理名被生成并存人tex一个

8、值.tureNames数组中.1.2.2纹理对象的创建和使用生成纹理名之后还必须将纹理名”绑定”到纹理数据上,可以调用glBindTexture()®数来实现此项任务:VoidglBindTexture(GLenurntarget.GIuinttexture一Name).Target参数取值可以为GL—TEXTURE一1D,GI一TEXTURE2D或者GITEXTURE3D,textureName参数为需要绑定的纹理名•当第一次调用此函数时,将会生成一个新的纹理对象,

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

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

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