Cocoa China 开发讨论区 » iPhone/iPod Touch开发一般讨论区 » 问;opengl 过渡色的图 为啥贴出来会失真. (转到动态网页)
« 1 2» Pages: ( 1/2 total )
本页主题: 问;opengl 过渡色的图 为啥贴出来会失真. 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

cnsoft
级别: 新手上路

 问;opengl 过渡色的图 为啥贴出来会失真.

描述:正常的
图片:
描述:失真的
图片:
描述:所用背景图
图片:
   很奇怪的问题, 现象是模拟器看着蛮正常的, 但是真机上却是失真的。
 我就是用Idemo 替换了背景图文件.  创建时使用  0,0,256.256 之类的对应调整. 
 不得其道.

  
顶端 Posted: 2008-10-11 17:36 | From:天津市 [楼 主]
透明de面具
级别: 侠客

 

从我在真机上跟踪的情况上看,这个png创建出UIImage后,这个UIImage被解析成了RGB565图,应该是16位的吧

而模拟器上就解析成了RGBA8888

这个应该就是区别所在了
顶端 Posted: 2008-10-11 19:59 | From:北京市海淀区 1 楼
dr_watson
终身成就奖 原创先锋奖
级别: 荣誉会员

 

iphone的texture, 一般截入時會轉成 RGBA8888 或 RGB565,你的看似是轉成RGB565,你用斷點看看貼圖截入後轉成什麼格式。
顶端 Posted: 2008-10-11 20:01 | From:天津市 2 楼
lvyile
原创先锋奖
级别: 圣骑士

 

昨天WWRC官方說過, iPhone OS 對且僅對png格式的做過優化, 那麼這個RGB565就是優化的結果咯?
顶端 Posted: 2008-10-11 20:01 | From:上海市浦东新区 3 楼
lvyile
原创先锋奖
级别: 圣骑士

 榮譽會員 和 聖騎士 的區別 (呵呵, 開個小玩笑)

顶端 Posted: 2008-10-11 08:01 PM | From:天津市 2 楼

Posted: 2008-10-11 08:01 PM | From:上海市浦东新区 3 楼
    
顶端 Posted: 2008-10-11 20:02 | From:上海市浦东新区 4 楼
透明de面具
级别: 侠客

 

模拟器上是RGBA8888,而真机变成了RGB565~~在info  = CGImageGetAlphaInfo(image);时

模拟器上返回的是KCGImageAlphaLast, 而真机上是KCGImageAlphaNoneSkipFirst

不知道为啥同样的图片,由png创建出的UIImage如此不同~~

模拟器制作出的.app中,图片没有经过特殊处理
而针对device做出的.app中,图片小了一些,但此时的png不能在mac下打开了

因此估计不是UIImage的处理不同,而是png本身的不同导致吧~~我猜


[ 此帖被透明de面具在2008-10-11 20:13重新编辑 ]
顶端 Posted: 2008-10-11 20:06 | From:北京市海淀区 5 楼
dr_watson
终身成就奖 原创先锋奖
级别: 荣誉会员

 Re:榮譽會員 和 聖騎士 的區別 (呵呵, 開個小玩笑)

Quote:
引用第4楼lvyile于2008-10-11 20:02发表的 榮譽會員 和 聖騎士 的區別 (呵呵, 開個小玩笑) :
顶端 Posted: 2008-10-11 08:01 PM | From:天津市 2 楼

Posted: 2008-10-11 08:01 PM | From:上海市浦东新区 3 楼
    


呵呵,同一時間發貼,這個機率可挺小的呢!
顶端 Posted: 2008-10-11 20:09 | From:天津市 6 楼
dr_watson
终身成就奖 原创先锋奖
级别: 荣誉会员

 

樓主是用idemo,你可以看一下那個 Texture2D 的類,它只要是有alpha的圖,就轉成RGB8888,而沒有 alpha 的,就會轉成RGB565,你可以以改一下Texture2D 或把圖改成有 alpha。
顶端 Posted: 2008-10-11 20:11 | From:天津市 7 楼
透明de面具
级别: 侠客

 

“在info  = CGImageGetAlphaInfo(image);时
模拟器上返回的是KCGImageAlphaLast, 而真机上是KCGImageAlphaNoneSkipFirst”

这个就是 Texture2D 中的,initWithCGImage这个方法内的。


模拟器制作出的.app中,图片没有经过特殊处理
而针对device做出的.app中,图片小了一些,但此时的png不能在mac下打开了

因此估计不是UIImage的处理不同,而是png本身的不同导致吧~~我猜
顶端 Posted: 2008-10-11 20:15 | From:北京市海淀区 8 楼
透明de面具
级别: 侠客

 

看来是SDK对png文件做的“压缩处理”导致的,还不确定是不是压缩,因为hex打开device的.app后,还是.PNG开头的文件头。
所以说“压缩处理”是不准确的,应该是对PNG图片做过某些处理

如果把这个图片的后缀改为.dat,再加入工程,这样以这个.dat创建出来的,就是RGBA8888,
不过 info  = CGImageGetAlphaInfo(image); 的返回值变成了KCGImageAlphaPremultipliedFirst,也可以使hasAlpha变成YES。

也就没有了失真

但这只能说是个歪招~~


[ 此帖被透明de面具在2008-10-11 20:37重新编辑 ]
顶端 Posted: 2008-10-11 20:31 | From:北京市海淀区 9 楼
« 1 2» Pages: ( 1/2 total )
Cocoa China 开发讨论区 » iPhone/iPod Touch开发一般讨论区
快速发帖 顶端
内容
HTML 代码不可用

使用签名
Wind Code自动转换

字数检查 恢复数据
按 Ctrl+Enter 直接提交
表情 [更多]
Powered by PHPWind v6.3.2 Code © 2003-08 PHPWind
This is html template view this page faster