Cocos2d-X的多分辨率支持(1)



課程概述

“Cocos2d-X的多分辨率支持(1)”課程概述

    作爲手遊的載體,手機的發展日新月異,不僅是性能提高,尺寸的多樣化也成了一大亮點。本節課將介紹由Cocos2d-X提供的:如何匹配不同分辨率手機屏幕辦法中的設計分辨率部分。

課程筆記

不同的分辨率按照怎樣的方式縮放元素

1、根據不同的屏幕分辨率設計不同的元素縮放比例

2、通過函數獲取屏幕尺寸,根據屏幕尺寸按照一定比例設置元素

3、按照一個預定義的分辨率設計,由遊戲引擎來根據這個分辨率針對不同的實際屏幕分辨率進行調整。

     在第3種情況中,開發者定義設計分辨率,並提供給遊戲引擎縮放係數(縮放策略);以及資源縮放因子用於對資源的尺寸進行調整。

縮放策略:

1、ResolutionPolicy::EXACT_FIT,滿屏顯示,可能會由於寬高比不同,出現比例不協調的現象。視口爲屏幕分辨率,繪製區域是設計分辨率表示的區域,繪製原點爲設計分辨率對應區域的原點。

2、ResolutionPolicy::NO_BORDER,超過屏顯示,以較大的縮放係數爲準,內容會顯示到屏幕外,然後被裁剪。居中顯示,視口大於屏幕分辨率,繪製區域是設計分辨率表示的區域,繪製原點爲設計分辨率對應區域的原點。

3、ResolutionPolicy::SHOW_ALL,小於屏顯示,以較小的縮放係數爲準,內容全部都會顯示到屏幕內,可能出現黑邊。居中顯示,視口小於屏幕分辨率,繪製區域是設計分辨率表示的區域,繪製原點爲設計分辨率對應區域的原點。

4、ResolutionPolicy::FIXED_xxxxx,以指定邊的縮放係數爲準,可能滿屏顯示,也可能出現空白。視口等於屏幕分辨率,繪製區域不是設計分辨率表示的區域,而是實際的屏幕分辨率,所以寫應用程序的時候不能寫絕對值座標。(當然固定的這個邊是可以寫固定值的)

Director::getInstance()->getWinSize()可得到繪製區域的分辨率,在ResolutionPolicy::NO_BORDER會超過實際分辨率,在ResolutionPolicy::SHOW_ALL會小於實際分辨率,在ResolutionPolicy::EXACT_FIT、ResolutionPolicy::FIXED_xxxxx等於實際分辨率。

Director::getInstance()->getVisibleSize()可得到繪製區域在可視區域的分辨率。

Director::getInstance()->getWinSizeInPixels()可得到繪製區域在OpenGL ES的真實區域的大小。

Director::getInstance()->getVisibleOrigin()可得到可視區域原點在繪製區域的位置,僅當ResolutionPolicy::NO_BORDER的情況下有用。

GLView::getFrameSize()可得到實際屏幕分辨率。Director::convertToUI用於返回一個基於設備UI系統的座標值。

GLView::setDesignResolutionSize會導致viewport、透視矩陣、觀察點位置的重新設置。setViewPortInPoints會將設計分辨率轉換爲基於屏幕實際像素大小的座標信息。而透視投影矩陣、觀察點的位置都是根據_winSizeInPoints設計的。


原文地址:

http://www.geekfaner.com/cocos2d-x/ReadCocos2dxSourceCode20.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章