cnsoft
级别: 新手上路![]() |
问;opengl 过渡色的图 为啥贴出来会失真.
描述:正常的
图片:
描述:失真的
图片:
描述:所用背景图
图片:
很奇怪的问题, 现象是模拟器看着蛮正常的, 但是真机上却是失真的。
我就是用Idemo 替换了背景图文件. 创建时使用 0,0,256.256 之类的对应调整. 不得其道. |
|---|---|
透明de面具
级别: 侠客![]() |
从我在真机上跟踪的情况上看,这个png创建出UIImage后,这个UIImage被解析成了RGB565图,应该是16位的吧
而模拟器上就解析成了RGBA8888 这个应该就是区别所在了 |
|---|---|
dr_watson
级别: 荣誉会员 ![]() |
iphone的texture, 一般截入時會轉成 RGBA8888 或 RGB565,你的看似是轉成RGB565,你用斷點看看貼圖截入後轉成什麼格式。
|
|---|---|
lvyile
级别: 圣骑士 ![]() |
昨天WWRC官方說過, iPhone OS 對且僅對png格式的做過優化, 那麼這個RGB565就是優化的結果咯?
|
|---|---|
![]() |
lvyile
级别: 圣骑士 ![]() |
榮譽會員 和 聖騎士 的區別 (呵呵, 開個小玩笑)顶端 Posted: 2008-10-11 08:01 PM | From:天津市 2 楼
Posted: 2008-10-11 08:01 PM | From:上海市浦东新区 3 楼 ![]() |
|---|---|
![]() |
透明de面具
级别: 侠客![]() |
模拟器上是RGBA8888,而真机变成了RGB565~~在info = CGImageGetAlphaInfo(image);时
模拟器上返回的是KCGImageAlphaLast, 而真机上是KCGImageAlphaNoneSkipFirst 不知道为啥同样的图片,由png创建出的UIImage如此不同~~ 模拟器制作出的.app中,图片没有经过特殊处理 而针对device做出的.app中,图片小了一些,但此时的png不能在mac下打开了 因此估计不是UIImage的处理不同,而是png本身的不同导致吧~~我猜 [ 此帖被透明de面具在2008-10-11 20:13重新编辑 ] |
|---|---|
dr_watson
级别: 荣誉会员 ![]() |
Re:榮譽會員 和 聖騎士 的區別 (呵呵, 開個小玩笑)Quote:引用第4楼lvyile于2008-10-11 20:02发表的 榮譽會員 和 聖騎士 的區別 (呵呵, 開個小玩笑) : 呵呵,同一時間發貼,這個機率可挺小的呢! |
|---|---|
dr_watson
级别: 荣誉会员 ![]() |
樓主是用idemo,你可以看一下那個 Texture2D 的類,它只要是有alpha的圖,就轉成RGB8888,而沒有 alpha 的,就會轉成RGB565,你可以以改一下Texture2D 或把圖改成有 alpha。
|
|---|---|
透明de面具
级别: 侠客![]() |
“在info = CGImageGetAlphaInfo(image);时
模拟器上返回的是KCGImageAlphaLast, 而真机上是KCGImageAlphaNoneSkipFirst” 这个就是 Texture2D 中的,initWithCGImage这个方法内的。 模拟器制作出的.app中,图片没有经过特殊处理 而针对device做出的.app中,图片小了一些,但此时的png不能在mac下打开了 因此估计不是UIImage的处理不同,而是png本身的不同导致吧~~我猜 |
|---|---|
透明de面具
级别: 侠客![]() |
看来是SDK对png文件做的“压缩处理”导致的,还不确定是不是压缩,因为hex打开device的.app后,还是.PNG开头的文件头。
所以说“压缩处理”是不准确的,应该是对PNG图片做过某些处理 如果把这个图片的后缀改为.dat,再加入工程,这样以这个.dat创建出来的,就是RGBA8888, 不过 info = CGImageGetAlphaInfo(image); 的返回值变成了KCGImageAlphaPremultipliedFirst,也可以使hasAlpha变成YES。 也就没有了失真 但这只能说是个歪招~~ [ 此帖被透明de面具在2008-10-11 20:37重新编辑 ] |
|---|---|














呵呵,同一時間發貼,這個機率可挺小的呢!