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. DirectX12 3D 游戏开发与实战第三章内容

    变换 学习目标 理解如何使用矩阵表示线性变换和仿射变换 学习对几何体进行缩放.旋转和平移的坐标变换 根据矩阵之间的乘法运算性质,将多个变换矩阵合并为一个单独的净变换矩阵 找寻不同坐标系之间的坐标转换方 ...

  2. c语言的数据类型,运算符,存储类型

    [1词法符号]1. 关键字:32个1) 存储类型:决定(设备)变量的存储位置auto(自动型).extern(外部引用) static(静态型) register(寄存器类型)2) 数据类型:决定设备 ...

  3. 《Ansible自动化运维:技术与最佳实践》第三章读书笔记

    Ansible 组件介绍 本章主要通过对 Ansible 经常使用的组件进行讲解,使对 Ansible 有一个更全面的了解,主要包含以下内容: Ansible Inventory Ansible Ad ...

  4. Android远程服务AIDL开发过程中容易遇见的两个问题

    问题 一 JavaBinder: Uncaught remote exception! (Exceptions are not yet supported across processes.) jav ...

  5. 第六届蓝桥杯java b组第三题

    第三题 三羊献瑞 观察下面的加法算式: 其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字. 请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容. 答案这个题目完全可以使用暴 ...

  6. Spring 梳理 - 构造web项目时,使用eclipse如何引用jar包

    方法1:直接将jar复制到web项目中的WEB-INF/lib目录中 方法2:构造buildpath时,不使用“外部jar”的形式

  7. mysql创建数据库指定字符集和校对规则

    mysql创建数据库的语法格式: CREATE DATABASE [IF NOT EXISTS] <数据库名> [[DEFAULT] CHARACTER SET <字符集名>] ...

  8. springboot集成Spring Data JPA数据查询

    1.JPA介绍 JPA(Java Persistence API)是Sun官方提出的Java持久化规范.它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据.它的出现主要是为 ...

  9. Scala 学习笔记之implicit

    implicit 分为隐式转换和隐式参数,下面例子展现了两种方式的用法: package com.citi.scala class Man(val name: String) { def talkWi ...

  10. Scala 学习笔记之隐式参数和隐式转换并用

    隐式转换条件: 1. 当表达式类型与预期的类型不同时 2.当对象访问一个不存在的成员时 3.当对象调用某个方法,而该方法的参数声明与传入参数不相匹时. 隐式转换搜索范围: 1. 位于源火目标类型伴生对 ...