MFC的OpenGL纹理贴图技术研

上传人:汽*** 文档编号:562655939 上传时间:2022-08-08 格式:DOC 页数:3 大小:16.50KB
返回 下载 相关 举报
MFC的OpenGL纹理贴图技术研_第1页
第1页 / 共3页
MFC的OpenGL纹理贴图技术研_第2页
第2页 / 共3页
MFC的OpenGL纹理贴图技术研_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《MFC的OpenGL纹理贴图技术研》由会员分享,可在线阅读,更多相关《MFC的OpenGL纹理贴图技术研(3页珍藏版)》请在金锄头文库上搜索。

1、MFC的OpenGL纹理贴图技术研摘要:penGL是一个开放的三维图形软件包,而Visual+是目前主要的penGL开发工具。本文简要介绍了penGL的纹理贴图技术及其在F中的根本操作步骤。并通过最后的实例验证了纹理贴图技术在绘制真实感图形中的必要性。关键词:penGL;F;纹理贴图;计算机图形学现实世界中的物体外表往往有各种纹理,因此要绘制逼真的三维物体,除了对物体进展光照处理外,还需要加上纹理贴图,使物体看起来更真实。penGL是SGI公司的一个开放的三维计算机图形软件接口,为用户提供丰富的图形库,能快速渲染出高质量的三维彩色图像。penGL编程的重点是图形的生成和如何产生各种真实效果,但

2、是编写一个优秀的inds程序,还必须用到用户界面接口。V+的F形式可以较为完美地实现对penGL生成的效果图的动态交互操作。纹理贴图技术简介纹理贴图技术也叫纹理映射技术,它是计算机图形学中广泛应用的一项重要技术。传统的几何造型只能表示景物的形状,无法描绘景物外表的微观细节,而利用纹理图像来描绘景物外表各点处的反射属性,可以到达模拟景物外表丰富的纹理细节的目的,进步计算机生成图形的真实性。另一方面,采用纹理映射的方法可以大大地简化建模的过程。比方,同是一栋大楼外表,假设完全用建模的方法来构造,那么需要画出大楼的每一扇门、每一扇窗户;假设采用纹理映射,只需建立简单的长方体模型,用拍下的大楼外观图片

3、贴至模型外表即可。相比之下,工作量要小得多。penGL纹理贴图纹理映射是将指定图像的一局部映射到允许进展纹理映射的每个图段上。这种映射伴随着使用一幅图像的颜色到某一图段的(s,t,r)坐标所指示的位置上并修改该图段的RGBA颜色。但要特别注意的是,在penGL中,纹理映射仅在RGBA形式下说明,在颜色索引形式下,它的使用未作定义。概括地说,使用纹理绘制的一般步骤为:定义纹理贴图、控制纹理、说明纹理贴图方式,定义纹理坐标等。21定义纹理纹理的定义有两种:连续法和离散法。连续法把纹理定义为一个二元函数,函数的定义域就是纹理空间。而离散法那么是把纹理定义在一个二维数组中,该数组表示纹理空间中行间隔和

4、列间隔固定的一组网格点上的纹理值。网格点之间的其它点的纹理值可以通过对相邻网格点上纹理值进展插值来获得。通过纹理空间与物体空间之间的坐标变换,可以把纹理映射到物体外表。一般来说,离散法是较为常用的纹理定义方法。其实现函数为glTexlage2D()。该函数的原型如下:vidglTexIage2D(Gl_enutarget,GLintlevel,Gl_enupnents,GLsizEiidth,GLsizeiheight,Glintbrder,Gl_enufrat。Gl_enutype,nstGLvidpixels);其中:target指定纹理映射,此处必须是GLTEXTURE2D;level指

5、定纹理图像分辨率的级数,当只有一种分辨率时,level=0;pnents是选择用于调整和混合的成分;idth和height分别指定纹理图像的宽和高,必须是2,凡为正数;Brder为边界的宽度,必须是0和1;frat和type分别指定纹理映射的格式和数据类型;Pixels指定一个指针,指向纹理数据在内存中的位置。22控制纹理纹理图像在映射到物体时会产生许多问题。这些问题主要有纹理图像的纹理怎样对应到屏幕上的像素、怎样通过纹理贴图实现纹理缩放和纹理重复等。其实现函数为glTexParneter(),该函数的原型(以glTexParneterf形式为例)为:vidglTexParneterf(GLe

6、Ruintarget,GLeRuinpnae,GLflatpara),其中target参数为目的纹理,pnae参数的取值有以下几个:GLTEXTUREINFILTER、GL,TUREAG一兀I肛R、GLTEXrrIyRERAP一GLTEXTURERAPT,而parn参数的取值要根据pnae而定。23说明纹理贴图方式penGL用于纹理贴图方式的函数为glTexv(),该函数的原型(以glTexEnvf形式为例)为:vidglTexEnv(Gl_enutarget,Gl_enupnae,GLflatpara)其中target参数必须为GLTEXTUREENV,pnae参数必须为GLTEXTUREE

7、NVDE,而参数parn为GLDULATE、GLDEAL或GLBLEND。24定义纹理坐标纹理坐标控制纹理图像中的像素怎样映射到物体。纹理坐标可以是1、2、3、4维的,通常用齐次坐标来表示,即(5,t,r,q)。penGL定义纹理坐标的函数为xrd()。该函数共有32种不同的形式。例如:glTexrd4f(f,0f,0f,0f)。3基于F的penGL中的纹理贴图利用V+的FAppizard(exe)建立一个新工程penglTexture,选择基于单文档界面的应用,其它选项都使用缺省值。在penglTextureVieh头文件中,添加各成员变量和成员函数。fr(i=0;i128;i+)frfj=

8、0;j64;j+)=(ix08)=0)(j)=0)*255;g=(4*i)255;b:(j*i)255;iagEi儿j0=(GIaxbyte)b;iagei儿J儿1=(GIaxbyte)g;iageij2=(GIaibyte);glPixelStrei(GLUNPAKALIGNENT,2);glTexIage2D(GLTEXTURE一2D,0,3,64,64,0,GLRGB,GLUNSIGNEDBYTE,iage);定义纹理glTexParaeteri(GLTEXTURE一2D,GLTEXTURERAPS,GLLAP);控制纹理glTexParaeteri(GLTEXTURE一2D,GLTEX

9、TURERAPT,GLLAP);glTexParaeteri(GLTEXTURE一2D,GLTEXTUREAGFILER,GLNEAREST);glTexParaeteri(GLTEXTURE一2D,GLTEXTUREINFILTER,GLNEAREST);rSTexEnvf(GLTEXTUREENV,GLTEXTUREENVDE,GLDEAL);说明纹理贴图方式glEnable(GLTEXTURE一2D);启动纹理贴图glShadedel(GLSTH);glBegin(GLQUADS);定义纹理坐标和物体几何坐标glTexrd2f(1f,1f);glVertex3f(1f,1f,0f);gl

10、Texrd2f(1f,0f);glVertex3f(1f,一1f,0f);glTexrd2f(0f,0f);glVertex3f(一1f,一1f,0f);glTexrd2f(0fIf);glVertex3f(一If,If,0f);glEnd();glDisabh(GLTEXTURE一2D);关闭纹理贴图完毕语利用penGL强大的图形功能,可以轻松地实现逼真的贴图模型。在此根底上,运用V+的F应用程序形式,可对penGL产生的模型进展更进一步的控制和变化。同时提供应用户一个友好的操作环境,这在当今的时尚编程中是不可或缺的。参考文献:1向世明penGL编程与实例北京:电子工业出版社,19992HearnD,BakerP计算机图形学北京:电子工业出版社,19983KruglinskiDJVisual+技术内幕(第四版)北京:清华大学出版社,20014李颖,朱伯立penGL技术应用实例精粹北京:国防工业出版社,20015TudeftAbde,GaUinariPatrikNeuralandIave0n一ternsJIEEPreedings:ntrltheryandAppliatins,1997,144(6):531536

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号