Cocos2d x cc.Director中getWinSize和getWinSizeInPixels的区别是什么?

Cocos2d x cc.Director中getWinSize和getWinSizeInPixels的区别是什么?,cocos2d-x,cocos2d-x-3.0,cocos2d-js,Cocos2d X,Cocos2d X 3.0,Cocos2d Js,这两种功能的预期区别是什么: var size = cc.Director.getInstance().getWinSize(); var sizePx = cc.Director.getInstance().getWinSizeInPixels(); 在我的例子中,它们都返回完全相同的值 在哪些情况下,它们应该返回不同的值?一个返回点、逻辑像素,另一个返回物理像素。在视网膜显示中,两个值不同(2x) 一个返回点、逻辑像素,另一个返回物理像素。在视网膜显示中,两个值不同(2x)

这两种功能的预期区别是什么:

    var size = cc.Director.getInstance().getWinSize();
    var sizePx = cc.Director.getInstance().getWinSizeInPixels();
在我的例子中,它们都返回完全相同的值


在哪些情况下,它们应该返回不同的值?

一个返回点、逻辑像素,另一个返回物理像素。在视网膜显示中,两个值不同(2x)

一个返回点、逻辑像素,另一个返回物理像素。在视网膜显示中,两个值不同(2x)

一个返回点、逻辑像素,另一个返回物理像素。在视网膜显示中,两个值不同(2x)

一个返回点、逻辑像素,另一个返回物理像素。在视网膜显示中,两个值不同(2x)

在Cocos2dx的最新版本中,给出的答案不再准确,特别是因为该框架已经放弃了对显式视网膜模式的支持,转而让程序员能够独立于屏幕和资产分辨率设置游戏分辨率,并在必要时执行缩放

严格来说,函数
getWinSize()
返回您选择的任何分辨率的值(使用
CCGLView::setDesignResolution(float,float,ResolutionPolicy)
),以像素为单位
getWinSizeInPixels()
返回设计分辨率,乘以内容比例因子,这也是由您使用
CCDirector::setContentScaleFactor(float)
提供的。如果不提供这些函数的值,Cocos2dx将根据当前平台的任意值选择设计分辨率。例如,在iOS上,它将使用提供的CAEAGLView的大小(以像素为单位)(在某些情况下可能小于实际设备分辨率),
getWinSize()
getWinSizeInPixels()
都将返回相同的值

如果您将资源扩展到游戏分辨率,则
getWinSize()
getWinSizeInPixels()
将返回不同的值。在这种情况下,
getWinSizeInPixels()
指示如果不必缩放资源,分辨率将是多少

说明系统工作原理的一些可能设置:

  • 1组图像,1个设计分辨率,多个设备分辨率=每次设计时缩放的图像!=设备(较低质量的外观用于高档,不必要的内存/cpu使用用于低档),单分辨率布局代码(可能更简单)
  • 多组图像,1个设计分辨率,多个设备分辨率=缩放图像的需要更少,因为不同的资产覆盖更大范围的目标,保留单分辨率布局代码
  • 多组图像、多个/可采用的设计分辨率、多个设备分辨率=不需要缩放,代码必须明确与分辨率无关(可能更复杂)

不久前我开始研究Cocos2dx,可能是我出了什么问题,但这是我经过一些测试后得到的结果。

在Cocos2dx的最新版本中,给出的答案不再准确,特别是因为该框架已经放弃了对显式视网膜模式的支持,转而为程序员提供独立于屏幕和资产分辨率设置游戏分辨率的能力,并在必要时执行缩放

严格来说,函数
getWinSize()
返回您选择的任何分辨率的值(使用
CCGLView::setDesignResolution(float,float,ResolutionPolicy)
),以像素为单位
getWinSizeInPixels()
返回设计分辨率,乘以内容比例因子,这也是由您使用
CCDirector::setContentScaleFactor(float)
提供的。如果不提供这些函数的值,Cocos2dx将根据当前平台的任意值选择设计分辨率。例如,在iOS上,它将使用提供的CAEAGLView的大小(以像素为单位)(在某些情况下可能小于实际设备分辨率),
getWinSize()
getWinSizeInPixels()
都将返回相同的值

如果您将资源扩展到游戏分辨率,则
getWinSize()
getWinSizeInPixels()
将返回不同的值。在这种情况下,
getWinSizeInPixels()
指示如果不必缩放资源,分辨率将是多少

说明系统工作原理的一些可能设置:

  • 1组图像,1个设计分辨率,多个设备分辨率=每次设计时缩放的图像!=设备(较低质量的外观用于高档,不必要的内存/cpu使用用于低档),单分辨率布局代码(可能更简单)
  • 多组图像,1个设计分辨率,多个设备分辨率=缩放图像的需要更少,因为不同的资产覆盖更大范围的目标,保留单分辨率布局代码
  • 多组图像、多个/可采用的设计分辨率、多个设备分辨率=不需要缩放,代码必须明确与分辨率无关(可能更复杂)

不久前我开始研究Cocos2dx,可能是我出了什么问题,但这是我经过一些测试后得到的结果。

在Cocos2dx的最新版本中,给出的答案不再准确,特别是因为该框架已经放弃了对显式视网膜模式的支持,转而为程序员提供独立于屏幕和资产分辨率设置游戏分辨率的能力,并在必要时执行缩放

严格来说,函数
getWinSize()
返回您选择的任何分辨率的值(使用
CCGLView::setDesignResolution(float,float,ResolutionPolicy)
),以像素为单位
getWinSizeInPixels()
返回设计分辨率,乘以内容比例因子,同样,