紋理的畫素格式是影象儲存在gpu記憶體的方式。
你可能會見到以下畫素格式:
紅色通道、綠色通道、藍色通道和alpha 通道各8位。
如果想獲得最好的質量,使用這種格式是很靠譜的。
但它會占用的記憶體會比16位的紋理多一倍,在iphone上記憶體是很寶貴的資源,這個***。
自然的,它的運算速度也是相對較慢的。
常用的地方:整個場景的背景、大量漸變色的。
紅色通道、綠色通道、藍色通道、alpha通道各4位
它對每個通道都有不錯的支援,還能保證相對良好的速度和記憶體佔用率。
常用的地方:需要有不同的透明度精靈。
紅、綠、藍三色通道各5位,alpha通道僅有1位。
rgb通道表現良好,但是alpha通道可就慘了。它在記憶體占用和速度上表現不錯。
常用的地方:精靈需要透明度上的表現,但是透明度的表現上只有兩種:開或者關。
紅色通道5位,綠色通道6位,藍色通道5位,這可憐的孩子沒有alpha通道。
它能盡最大努力的給你乙個高品質的16位紋理,前提是你不需要透明度的支援。
常用的地方:遊戲中的背景影象。
cocos2d-x中預設的畫素格式是rgba8888。
使用方法:
ps.因為是翻譯的,所以按照0.73版本的**走,如果需要換成cocos2d2.x,輕將裡面的texture2d換成cctexture2d,ktexture2d***換成kcctexture2d***。sprite換成ccsprite。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// set the pixel format before loading the image
// rgba 8888 image (32-bit
[texture2d
setdefaultalphapixelformat
:ktexture2dpixelformat_rgba8888];
sprite
*sprite1=[
sprite
spritewithfile
:@"test-rgba1.png"];
// set the pixel format before loading the image
// rgba 4444 image (16-bit)
[texture2d
setdefaultalphapixelformat
:ktexture2dpixelformat_rgba4444];
sprite
*sprite2=[
sprite
spritewithfile
:@"test-rgba2.png"];
// set the pixel format before loading the image
// rgb5a1 image (16-bit)
[texture2d
setdefaultalphapixelformat
:ktexture2dpixelformat_rgb5a1];
sprite
*sprite3=[
sprite
spritewithfile
:@"test-rgba3.png"];
// set the pixel format before loading the image
// rgb565 image (16-bit)
[texture2d
setdefaultalphapixelformat
:ktexture2dpixelformat_rgb565];
sprite
*sprite4=[
sprite
spritewithfile
:@"test-rgba4.png"];
// restore the default pixel format
[texture2d
setdefaultalphapixelformat
:ktexture2dpixelformat_default];
問:我可以把這種技術使用在pvrtc影象上嗎?
答: 不行,pvrtc影象有自己的格式。pvrtc影象的速度更快,占用的記憶體更少。因為他們是2位或4位的紋理,但質量卻並沒那麼好。
問:如果我用16位的紋理,我遊戲載入速度是不是會更快呢?
答: 紋理畫素格式和你遊戲的載入時間沒半毛錢關係,畫素格式用來管理影象在gpu記憶體中的儲存方式。如果你想要更快的載入時間,你應該減少你.png /的gif / tiff / tmp影象檔案的大小。
問:我應該使用xcode壓縮過的rgb565影象嗎?
答: xcode壓縮過的png影象有它自己的rgba通道。即使png影象的格式是rgb565,你也不該混淆紋理畫素格式和png影象格式。png影象的格式可以被photoshop和cocos2d所識別,但gpu知道對其一無所知,而png影象最終需要轉換成紋理(gpu所能理解的格式)。最終答案是:你究竟想要什麼呢?你需要的是和影象格式(png,gif tiff,bmp)的無關的紋理格式!
問:如果我建立乙個png / bmp / tiff / gif等影象沒有alpha通道,我可以改變紋理畫素格式?
答:如果您的png / bmp / tiff / gif等影象沒有alpha通道(或不預乘),那麼紋理畫素格式將被設定成rgb565。它是無法被api改變的,但你可以通過修改texture2d.m檔案來實現。
問:我可以一次性的修改已建立紋理的畫素格式嗎?
答:沒戲。一旦建立了紋理,你就不能修改紋理的畫素格式啦!但是你可以從同乙個影象建立不同格式的紋理。但是這之前千萬別忘了從texturemgr裡面移除這個紋理(到了cocos2d 2.x的時候應該是cctexturecache,這個cache會儲存原來的紋理,所以如果建立同名紋理的時候,別忘記移除之前的那個)。
cocos2dx 紋理快取
快取 cache 機制的原理是什麼?把新加進記憶體的資源做乙個hashmap儲存,每乙個資源加乙個key。每次載入資源,先從快取中尋找,如果找到就直接返回,否則載入到記憶體後再返回。一 自動快取紋理 直接使用display.newsprite filename 建立精靈,引擎內部會自動把紋理載入到快...
cocos2dx 紋理快取
在遊戲中需要載入大量的紋理,這些操作都是很耗記憶體和資源的。當遊戲中有個介面用到的非常多,第一次點進這介面時速度非常慢 因為要載入繪製很多 出現卡頓,我們可以使用texturecache提前非同步載入紋理,等載入結束,進入到這個介面再使用這些速度就會非常快。texture2d 紋理,即加載入記憶體後...
cocos2d x 獲取紋理資料
s sprite create res gire.png s setposition visiblesize 2 this addchild s auto id s gettexture getname int format,width,height glgettexlevelparameteriv...