OpenGL技术与游戏分析.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
OpenGL技术与游戏分析

摘 要 OpenGL是一个开放的三维图形软件包,而Visual C++是目前主要的OpenGL开发工具。OpenGL即开放性图形库,它是一种高性能的开放式且功能强大的3D图形库,具有几百个指令和函数。本文简要介绍了OpenGL的纹理贴图技术及其在MFC中的基本操作步骤。并通过最后的实例验证了纹理贴图技术在绘制真实感图形中的必要性.还讨论了两种将常见三维模型转入OpenGL中实现交互的方法,首先对3DS文件进行分析,然后给出转化的思路。从而将三维建模软件产生的三维模型移植到三维场景中,实现仿真。 关 键 词 OpenGL;MFC;纹理贴图;三维重构;虚拟现实;虚拟仓库 浅析OpenGL技术和游戏 一、OpenGL的纹理贴图技术 现实世界中的物体表面往往有各种纹理,因此要绘制逼真的三维物体,除了对物体进行光照处理外,还需要加上纹理贴图,使物体看起来更真实。OpenGL是SGI公司的一个开放的三维计算机图形软件接口,为用户提供丰富的图形库,能快速渲染出高质量的三维彩色图像。OpenGL编程的重点是图形的生成和如何产生各种真实效果,但是编写一个优秀的Windows程序,还必须用到用户界面接口。VC++的MFC模式可以较为完美地实现对OpenGL生成的效果图的动态交互操作。 1.纹理贴图技术简介 纹理贴图技术也叫纹理映射技术,它是计算机图形学中广泛 应用的一项重要技术。传统的几何造型只能表示景物的形状,无法描述景物表面的微观细节,而利用 纹理图像来描述景物表面各点处的反射属性,可以达到模拟景物表面丰富的纹理细节的目的,提高计算机生成图形的真实性。另一方面,采用纹理映射的方法可以大大地简化建模 的过程。比如,同是一栋大楼表面,若完全用建模的方法来构造,则需要画出大楼的每一扇门、每一扇窗户;若采用纹理映射,只需建立简单的长方体模型,用拍下的大楼外观图片贴至模型表面即可。相比之下,工作量要小得多。 1.1 OpenGL纹理贴图 纹理映射是将指定图像的一部分映射到允许进行纹理映射的每个图段上。这种映射伴随着使用一幅图像的颜色到某一图段的(s,t,r)坐标所指示的位置上并修改该图段的RGBA颜色。但要特别注意的是,在OpenGL中,纹理映射仅在RGBA模式下说明,在颜色索引模式下,它的使用未作定义。概括地说,使用纹理绘制的一般步骤为:定义纹理贴图、控制纹理、说明纹理贴图方式,定义纹理坐标等。 2.1 定义纹理 纹理的定义有两种:连续法和离散法。连续法把纹理定义为一个二元函数,函数的定义域就是纹理空间。而离散法则是把纹理定义在一个二维数组中,该数组表示纹理空间中行间隔和列间隔固定的一组网格点上的纹理值。网格点之间的其它点的纹理值可以通过对相邻网格点上纹理值进行插值来获得。通过纹理空间与物体空间之间的坐标变换,可以把纹理映射到物体表面。一般来说,离散法是较为常用的纹理定义方法。其实现函数为glTexlmage2D()。 该函数的原型如下: void glTexImage2D(GLenum target,GLint level,GLint internalformat, GLsizei width,GLsizei height,GLint border, GLenum format,GLenum type,const GLvoid *pixels);其中:target指定纹理映射,此处必须是GLTEXTURE 2D;level指定纹理图像分辨率的级数,当只有一种分辨率时,level=0;Components是选择用于调整和混合的成分;width和height分别指定纹理图像的宽和高,必须是2 ,凡为正数;Border为边界的宽度,必须是0和1;format和type分别指定纹理映射的格式和数据类型;Pixels指定一个指针,指向纹理数据在内存中的位置。 2.2 控制纹理 纹理图像在映射到物体时会产生许多问题。这些问题主要有纹理图像的纹理怎样对应到屏幕上的像素、怎样通过纹理贴图实现纹理缩放和纹理重复等。其实现函数为glTexParmneter(),该函数的原型(以glTexParmneterf形式为例)为void glTexParameterf(GLenum target,GLenum pname,GLfloat param); 2.3 说明纹理贴图方式 OpenGL用于纹理贴图方式的函数为glTexEnv(),该函数的原型(以glTexEnvf形式为例)为:void glTexEnvf(GLenum target,GLenum pname,GLfloat param);其中target参数必须为GL_TEXTURE_ENV,pname参数必须为GL_TEXTURE_ENV_MODE,而参数parmn为GL_MODULATE,

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档