Android 3D游戏模型纹理处理.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android 3D游戏模型纹理处理.doc

Android 3D游戏模型纹理处理   摘 要 材质是3D模型对真实物体视觉效果的模拟。在使游戏3D场景看起来更真实,纹理就显得异常重要,有了材质和光照后画面效果丰富了许多,但是三维物体的表面只能是光滑的,没有花纹等细节。本文叙述了android3D游戏模型材质与纹理处理过程。   关键词 android;3D;纹理;OPENGL ES   中图分类号:TP391 文献标识码:A 文章编号:1671-7597(2013)11-0000-00   1 3D模型材质与纹理   材质主要用于描述对象如何反射和传播光线,通过材质的设置可以达到模拟对象的置地,表面显示效果。例如我们喜欢的水晶,玻璃等等效果,它提供了模型表面图案、反射、折射效果,通过材质的贴图可以实现多彩多样的材质。材质在模型最终显示效果中占有重要地位。同时高超的贴图技术是制作仿真材质的关键,也是决定最后渲染效果的关键。材质由颜色或贴图组成,并且绝大部分的标准材质是通过4种颜色构成对其进行模拟。   通过public abstract void glMaterialfv(int,int,float[],int)方法可以设置材质的相关属性。高光反射区域,数越大亮区越小、越暗。散射光一般设置为比环境光高,比反射光低,镜面光一般设置较高。   纹理包含众多的多边形,由这些多边形组成场景中看到的实际画面,而且对变形的个数和行装越多越小画面就越细致。纹理定义了物体表面的结构,如花纹,图案,皱纹等等。纹理是一个二维数组,其元素是一些颜色值,每一元素称之为纹理像素。纹理对象是一个内部数据类型,存储着纹理数据。你不能直接访问纹理对象,但是可以通过一个整数的ID来作为其句柄来跟踪。通过此句柄,可以作为当前使用的纹理(称之为纹理绑定),也可以从内存中删除这个纹理对象,还可以为一的纹理赋值(将一些纹理数据加载到关联的纹理中,称之为指定纹理)。一个纹理对象有其自己的一套坐标系,左下角是(0,0)右上角是(1,1):我们要将一个图像的一部分绘制到屏幕上,称之为纹理映射,就是将图像根据上述坐标系计算出要绘制的部分的各个点的纹理坐标,然后一一对应到屏幕上的坐标中去(下图中的坐标系是左上角为原点的)   2 场景中纹理处理   纹理贴图的使用,首先是需要去做的事开启纹理gl.glEnable(GL10.GL_TEXTURE_2d)和允许使用玩纹理数组gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY)方法,使用gl.glDisable(GL10.GL_TEXTURE_2D)方法关闭纹理。多重纹理占用大量内存,所以较好的模型需要的软件支持就更多。用于纹理的图像宽和高必须为乘方即2*n,如32,64,128,256,512等。纹理压缩顾名思义是让纹理数据占用空间更小的一种方法。在保持图片信息的前提下,纹理压缩使纹理占用较少的游戏存储空间,这样游戏本身就有更多的空间可以支配,在加载游戏资源时就可以充分利用局部性原理,提高系统的运行速度,这一点在提高系统运行速度方面至关重要。   纹理映射图的一个纹理元素对应纹理映射对象多边形的一个像素。如果显示的多边形被缩小一半,那么这个衣衣对应就不许做出处理,纹理的纹素就每间隔一个被显示。因此在某些情况下会导致一些视觉上的怪异现象。例如:如果把多边形缩小一半,纹理元素只是每间隔一个被应用,这种情况下所有的斑点或者灰暗点会突然消失。   在使用纹理是,程序会创建一个纹理对象,同时程序会判断是否有足够的内存可以容纳这个纹理,也没有包含诸如纹理边框、mipmap或立方体图纹理等高级技术。纹理绑定指定纹理处于活动状态。一次绑定只能激活一个纹理。活动的纹理是绘制多边形时使用的纹理,所以在提供图像数据前必须绑定纹理。gl.glBindTexture(GL10.GL_TEXTURE_2D, texture);绑定纹理数据,传入指定图片GLUtils.texImage2D(GL10.GL_TEXTURE_2D,0,bmp,0)。   纹理给整个3D图形真实感带来很大的不同。单一纹理可以实现想要的效果,但是使用多重纹理可以达到更加令人难忘的效果。实现多重纹理效果前,需要先用一个纹理绘制多边形,然后另外一个纹理透明地绘制在多边形上面。这样看起来纹理是在移动,有时可以达到意想不到的效果。另外管理纹理高速缓存是游戏引擎的速度至关重要。在系统性能和速度方面,和任何高速缓存一样,缓存命中很好,而不命中将很糟糕。根据系统局部性原理,如果遇到纹理在图形显示卡内存被频繁地换入换出的情况,这就是纹理高速缓存抖动。如果每一次资源请求,程序都要通过API对内存资源进行置换,一方面增加了交换时间消耗,另方面也说明程序算法不合理,没有

文档评论(0)

fa159yd + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档