Cocos2d-x的分辨率可以分为两种:屏幕分辨率和设计分辨率。

屏幕分辨率就是屏幕窗口的大小,单位是像素。

设计分辨率单位是点,一个点可能包括多个像素。

如果把一台显示器自身的分辨率比作屏幕分辨率的话,我们在操作系统里设置的分辨率就是设计分辨率。

理想状态下,设计分辨率的点就是屏幕分辨率的像素,两种分辨率相等,此时成像效果最清晰。

对一个Cocos2d-x项目,我们在创建GLView时,可以设置屏幕分辨率,也可称为屏幕大小:

glview = GLViewImpl::createWithRect("Title",Rect(0,0,1000,400));

接下来设置设计分辨率:

glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::FIXED_HEIGHT);

3个参数:设计分辨率的宽,设计分辨率的高,分辨率的适配策略。

适配策略有5种:

SHOW_ALL:按比例系数缩放,屏幕显示所有内容,不拉伸,屏幕可能有黑边。

NO_BORDER:按比例系数缩放,部分内容可能在屏幕外,不拉伸,没黑边。

EXACT_FIT:设计分辨率直接放大到屏幕分辨率,屏幕显示所有内容,拉伸,没黑边。

FIXED_HEIGHT:自动适配,高固定。

FIXED_WIDTH:自动适配,宽固定。

比例系数scaleX和scaleY是屏幕分辨率与设计分辨率的商。

在适配策略NO_BORDER和SHOW_ALL中,最终的缩放比例分别为scaleX和scaleY两者中最大和最小。而策略EXACT_FIT直接将scaleX和scaleY作为宽和高的缩放系数,即直接拉伸。

比例系数与设计分辨率的乘积是适配策略处理后的Size。

图片是根据设计分辨率进行展示。

开发过程中,我们只能设置设计分辨率,而实际的屏幕分辨率因为设备屏幕大小的不同而不同。在不同的设备中,引擎会把设计分辨率适配到屏幕上。

但是屏幕宽高比和设计分辨率的宽高比很可能差别大,直接放缩或拉伸的效果不理想。我们需要一种能根据屏幕宽高比自动调整设计分辨率宽高比的适配策略,这种策略就是FIXED_HEIGHT和FIXED_WIDTH。

一般采用FIXED_HEIGHT和FIXED_WIDTH策略。因为这两策略会根据固定方向(高或宽)重新计算变化方向(宽或高)的设计分辨率,计算后的设计分辨率的宽高比尽可能接近屏幕分辨率宽高比,而不是直接使用我们给的设计分辨率,防止拉伸变形或展示不全,使得图片最终能自适应屏幕的高或宽,并且都能够充满屏幕,没有黑边。

‎Cocos2d-x 学习笔记(23) 分辨率与屏幕适配的更多相关文章

  1. Ext.Net学习笔记23:Ext.Net TabPanel用法详解

    Ext.Net学习笔记23:Ext.Net TabPanel用法详解 上面的图片中给出了TabPanel的一个效果图,我们来看一下代码: <ext:TabPanel runat="se ...

  2. [原创]java WEB学习笔记23:MVC案例完整实践(part 4)---模糊查询的设计与实现

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  3. iOS :学习新技术途径和sizeClasses屏幕适配

    1.了解有什么新技术 1> 苹果API文档 - General - Guides - iOSx API Diffs 2> 观看WWDC会议视频 2.如何使用新技术 1> 自己根据AP ...

  4. Linux下汇编语言学习笔记23 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

  5. android学习笔记23——菜单

    菜单在桌面应用程序中使用非常广泛,由于手机屏幕的制约,菜单在手机应用中减少不少. android应用中的菜单默认是不可见的,只有当用户单击手机上“Menu”键时,系统才会显示该应用关联的采用项. an ...

  6. Python学习笔记23:Django构建一个简单的博客网站(一个)

    在说如何下载和安装Django,本节将重点讨论如何使用Django站点. 一 新建project 命令:django-admin startproject mysite # 有的须要输入:django ...

  7. Kali学习笔记23:Web渗透简介

    文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 我这里先说几句: 其实从缓冲区溢出到Web渗透之间还有 ...

  8. C++学习笔记23,类内函数重载

    该博文仅用于交流学习.请慎用于不论什么商业用途,本博主保留对该博文的一切权利. 博主博客:http://blog.csdn.net/qq844352155 转载请注明出处: 在一个类内,最常见的就是构 ...

  9. iOS学习笔记(3)— 屏幕旋转

    一.屏幕旋转机制: iOS通过加速计判断当前的设备方向和屏幕旋转.当加速计检测到方向变化的时候,屏幕旋转的流程如下: 1.设备旋转时,系统接收到旋转事件. 2.系统将旋转事件通过AppDelegate ...

随机推荐

  1. Winform中实现读取xml配置文件并动态配置ZedGraph的RadioGroup的选项

    场景 Winform中对ZedGraph的RadioGroup进行数据源绑定,即通过代码添加选项: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/ ...

  2. Scrapy高级用法

    日志相关 一.日志相关变量 LOG_LEVEL = '' LOG_FILE = '文件名.log' 二.日志级别 5 CRITICAL :严重错误 4 ERROR :普通错误 3 WARNING :警 ...

  3. python接口自动化测试七:获取登录的Cookies

    python接口自动化测试七:获取登录的Cookies,并关联到下一个请求   获取登录的cookies:loginCookies = r.cookies 把获取到的cookies传入请求:cooki ...

  4. STM32的RTC中断标志只能手动清除

    背景: 最近在做一个stm32的项目,其中用到RTC的实时时钟功能.时钟源采用外部32.768K晶振,时钟预分频设置为32767,目的是为了产生1秒的中断,然后在中断处理函数中更新实时年月日时分秒. ...

  5. 47 (OC)* OC反射机制

    Objective-C反射机制:是类似于Java的反射机制,这种动态机制可以让oc语言更加的灵活.这句话是对oc反射机制的初步认识,不过具体的怎么类似于java机制,怎么让oc更加的灵活,还得看下面的 ...

  6. 单线程Redis性能为何如此之高?

    文章原创于公众号:程序猿周先森.本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号. 实际项目开发中现在无法逃避的一个问题就是缓存问题,而缓存问题也是面试必问知识点之一,如果面试官好一点可能会简单 ...

  7. 链表-LinkList

    什么是链表 维基百科:链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer).由于不必须按顺序存 ...

  8. C/C++ 中带空格字符串输入的一些小trick

    今天在重温 C++ 的时候发现自己存在的一些问题,特此记录下来. 我们可以看一下下面这段代码: #include <iostream> #include <cstdio> #i ...

  9. idea在debug模式下的启动特别慢?

    程序执行到这里时,一直卡着不动? 原因可能是在方法上打了断点导致的: 将方法上的断点去掉,点击[Done]即可.

  10. locate,find

    locate:非实时查找,模糊匹配,查找是根据全系统文件数据库进行的,可以使用updatedb命令来手动生成数据库 find:实时查找,精确匹配,支持众多查找标准,遍历指定目录中的所有文件完成查找,速 ...