Android AngEnging学习TextureOptions、Texture
一、AndEnging 之 TextureOptions
1、NEAREST(Nearest滤波,实现上依赖GL_NEAREST做不光滑过滤,纹理环绕模式为GL_CLAMP_TO_EDGE,显示速度快画质差)
2、BILINEAR(双线性插值,实现上依赖GL_LINEAR做线性滤波,纹理环绕模式为GL_CLAMP_TO_EDGE,显示速度慢画质佳)
3、REPEATING(与NEAREST同为Nearest滤波,但纹理环绕模式为GL_REPEAT,会自动填充纹理上的空白区域,显示速度较快画质差)
4、REPEATING_BILINEAR(与BILINEAR同为双线性插值,但纹理环绕模式为GL_REPEAT,会自动填充纹理上的空白区域,显示速度很慢画质佳(低端机跑此模式异常悲剧,高端机尚可))
5、NEAREST_PREMULTIPLYALPHA(所有[PREMULTIPLYALPHA]结尾的TextureOptions与其它同名类差别仅在于是否支持根据Alpha值设置透明纹理,以下同)
6、BILINEAR_PREMULTIPLYALPHA 7、REPEATING_PREMULTIPLYALPHA
8、REPEATING_BILINEAR_PREMULTIPLYALPHA等静态对象。
除了AndEngine提供的Texture渲染模式,我们也可以按照规则自行构建需要的TextureOptions。比如构建一个混插的TextureOptions: new TextureOptions(GL10.GL_LINEAR_MIPMAP_LINEAR, GL10.GL_LINEAR_MIPMAP_NEAREST, GL10.GL_REPEAT, GL10.GL_REPEAT, GL10.GL_MODULATE, true);
另外,TextureOptions默认还有DEFAULT模式,不过该模式实际引用为NEAREST_PREMULTIPLYALPHA,也就是纹理低画质但支持Alpha。
如果您想要兼容低端机,则建议不要使用含有【BILINEAR】字样的AndEngine加载大图,而应直接使用TextureOptions.DEFAULT或TextureOptions.NEAREST_PREMULTIPLYALPHA;
因为BILINEAR模式对硬件要求较高,如果以此模式将较大纹理放到低端机上渲染,速度很可能无法保证。但是,假如您的游戏只针对高端机用户便无需介怀了。
二、AndEnging 之 Texture
刚刚学android中的AngEnging,看了很多资料,我来总结一下一些知识点:
a、Texture体系
1、纹理分为两类
★Texture:保存纹理本身的信息,如大小,格式和图片信息啥的
・Texture中的BitmapTextureAtas比较有意思,它实际上会将所有通过它加载的纹理放到一张大位图里,一起加载到GL10中,需要注意的是需要根据每张纹理的大小和位置来计算它的大小。
★TextureRegion:保存纹理的影射信息,如影射坐标等
・TextureRegion:保存单张纹理的影射信息。
・TiledTextureRegion:可以将一张纹理图中的不同子图影射成动画。例子用的就是它。
2、纹理辅助类也分为两类
★TextureAtlasSource:实现了通过各种途径加载纹理
・EmptyBitmapTextureAtlasSource:自己创建指定大小的文件
・FileBitmapTextureAtlasSource:从文件中加载位图纹理
・ExternalStorageFileBitmapTextureAtlasSource:从绝对路径中加载纹理
・InternalStorageFileBitmapTextureAtlasSource:从网络地址中加载位图纹理
・AssetBitmapTextureAtlasSource:从Asset下的文件中加载位图纹理
・assets文件夹是存放不进行编译加工的原生文件,即该文件夹里面的文件不会像xml,java文件被预编译,可以存放一些图片,html,js, css等文件。
★Factory:定义了纹理加载的流程
・BitmapTextureAtlasTextureRegionFactory:定义了通过BitmapTextureAtas加载纹理的流程
・TextureRegionFactory:定义了不通过BitmapTextureAtas加载纹理的流程
3、纹理美化类IBitmapTextureAtlasSourceDecoratorShape(看的头大,以后再看)
・ColorSwapBitmapTextureAtlasSourceDecorator:
・FillBitmapTextureAtlasSourceDecorator:
・LinearGradientFillBitmapTextureAtlasSourceDecorator:
・OutlineBitmapTextureAtlasSourceDecorator:
・RadialGradientFillBitmapTextureAtlasSourceDecorator
b、AnimatedSprite中纹理的使用
1、加载
在BaseGameActivity.onLoadResources()中加载纹理,最后将纹理注册到Engine的中。
在BaseGameActivity.onLoadScene()中生成AnimatedSprite后调用它的animate()设定纹理的显示间隔。
2、更新
在AnimatedSprites.onManagedUpdate()中更新纹理的影射信息,确定不同的纹理片断。
3、描画
在Engine的TextureManager.updateTextures()中将纹理加载入OpenGL环境中。AnimatedSprite的doDraw()中影射纹理。
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
Android AngEnging学习TextureOptions、Texture相关推荐
- java/android 设计模式学习笔记(1)--- 单例模式
前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使 ...
- Android Animation学习(五) ApiDemos解析:容器布局动画 LayoutTransition
Android Animation学习(五) ApiDemos解析:容器布局动画 LayoutTransition Property animation系统还提供了对ViewGroup中的View改变 ...
- android Fragment 学习资料推荐
为什么80%的码农都做不了架构师?>>> android Fragment 学习资料推荐:android大神 郭霖 http://blog.csdn.net/guolin_ ...
- android service 学习(上)
转载自:http://www.cnblogs.com/allin/archive/2010/05/15/1736458.html Service是android 系统中的一种组件,它跟Activity ...
- android service 学习(下)
android service 学习(下) 通常每个应用程序都在它自己的进程内运行,但有时需要在进程间传递对象,你可以通过应用程序UI的方式写个运行在一个不同的进程中的service.在android ...
- Android:学习AIDL,这一篇文章就够了(下)
前言 上一篇博文介绍了关于AIDL是什么,为什么我们需要AIDL,AIDL的语法以及如何使用AIDL等方面的知识,这一篇博文将顺着上一篇的思路往下走,接着介绍关于AIDL的一些更加深入的知识.强烈建议 ...
- Android Binder 学习笔记
前言: Binder是Android给我们提供的一种跨进程通信方式.理解Binder能帮助我们更好的理解Android的系统设计,比如说四大组件,AMS,WMS等系统服务的底层通信机制就都是基于Bin ...
- Android画图学习总结(四)——Animation(中)
在Android画图学习总结(四)--Animation(上)中详细介绍了Tween Animation的定义.使用,由于篇幅有限,很多中重要的方面没有说明,这篇文章一方面做个完整的总结说明,另外一方 ...
- android培训内容明细,记录Android开发学习
记录Android开发学习 Menu菜单学习 1.掌握Android中菜单的创建. 2.掌握Intent信使组件. 创建菜单Menu 我们模仿微信菜单栏学习,创建一个于微信菜单栏相似的菜单 那么我们应 ...
- Android FrameWork学习(二)Android系统源码调试
点击打开链接 通过上一篇 Android FrameWork学习(一)Android 7.0系统源码下载\编译 我们了解了如何进行系统源码的下载和编译工作. 为了更进一步地学习跟研究 Android ...
最新文章
- 【原创】HP 安装 depot (以mysql为例)
- 自制单选多选日历文本框文本域控件
- Symfony常用指令(收藏版)
- Asp.Net customErrors与httpErrors的区别
- SPOJ8222(后缀自动机--出现次数最多的子串)
- spring 2.2 改进_Spring 4中@ControllerAdvice的改进
- OpenWrt 之 MT7628 移植第三方SPI驱动
- 微信小程序中 tabbar的icon图标格式大小
- 内核中的notification chain浅析
- xml绑定省市,并实现二级联动
- 不存在_别傻了,根本就不存在缘分天定
- springboot高校学生健康打卡系统的设计与实现毕业设计源码021009
- java怎么打印反三角形_Java基础练习——打印正反三角形
- setoolikt制作钓鱼网站
- chm文件导入java_chm文件无法打开-解决方法
- c语言中 x20是什么意思,转义字符的问题,\ x00- \ x20是什么意思
- typescript基础
- Java程序设计——模拟行星运动
- vue中EventBus的实现原理
- 腾讯滑块识别-通用滑块识别