android的多分辨率支持机制 由anyDensity设置导致OpenGL贴图不能显示的问题谈开
来源:互联网 发布:java在线鲜花销售系统 编辑:程序博客网 时间:2024/06/07 00:36
前段时间给员工做培训,做了不少OpenGL下面的Demo,不过onSurfaceChanged 获取的width 和height和屏幕尺寸适中不符合
终于找到了 <supports-screens android:anyDensity="true"/> 设置,获取的尺寸和屏幕相符了
但是,贴图却不能显示了,全部变白
实机截图
模拟器运行效果
调查思考了一下原因,我觉得应该是样:
Android平台中,当程序在manifest中设置android:anyDensity="true"后,系统会对创建的bitmap进行缩放,缩放的根据就是Density。
而在设备上,opengl的贴图大小必须是2的N次方,模拟器因为是软件模拟,对贴图尺寸没有严格要求。我的图片本来是512*512的,但是被自动缩放后,尺寸就不标准了,所以造成贴图没有成功
通过调试确认了这一想法
bitmap = BitmapFactory.decodeResource(mContext.getResources(), id + i);
int w = bitmap.getWidth();
int h = bitmap.getHeight();不设置 android:anyDensity="true", w h 为512, 设置后 变为了768
然后,我将所有的图片资源,都放到了drawable-hdpi目录下,再运行程序,这次尺寸没有改变,贴图正常了。
基于这个问题,这里深入探讨一下android的多分辨率支持机制。
android SDK文档中 android-sdk-windows/docs/guide/practices/screens_support.html,说的其实比较清楚,不过由于是英文的,大家估计通读理解的人并不多,网上说到多分辨率支持,也就是
- android的多分辨率支持机制 由anyDensity设置导致OpenGL贴图不能显示的问题谈开
- 贴图的支持及设置:关于贴图分辨率的支持及设置的用户指南
- Android实际分辨率(android:anyDensity="false"的情况下的获取方法)
- Android中OpenGL ES贴图无法显示问题的可能原因
- 手机分辨率导致文字显示不完整的问题
- Android的分辨率支持
- CCClippingNode导致的贴图错误问题
- ubuntu 13.08 显示器不识别 分辨率不能设置的问题
- jayway OpenGL 教程的贴图问题
- android 设置支持pad等大屏幕、大分辨率的设备!!
- OpenGL ES 贴图图片是否有 Alpha 通道以及图片大小导致无法显示帖图的原因分析
- 关于OpenGL的贴图
- Android 模拟器支持的分辨率
- 关于Android的分辨率支持
- 关于Android的分辨率支持
- 解决 OpenGL ES 纹理贴图在真机上无法显示的问题
- OpenGL禁用深度测试 解决正投影贴图模式下集显电脑不能显示文字问题。
- 不能设置 19寸显示 屏分辨率为 1440*900 的神器到来了
- struts2的基本配置以及jsp的路径问题
- 创建excel 文件流
- 如何编写邮件主题和标题
- 通过注册表设置默认打印机的方法
- 英语飙升的好方法(转)
- android的多分辨率支持机制 由anyDensity设置导致OpenGL贴图不能显示的问题谈开
- Spring常见面试基本概念题
- 转载:Java3D实现三维显示
- 0727
- Android入门第九篇之AlertDialog
- 接口的使用
- Linux创建进程
- android AutoCompleteTextView 实现输入提示,类似百度支持输入拼音提示中文(gray)
- 关于android版本编译的问题