iPhone的圖形芯片(PowerVR MBX)對一種稱爲 PVRTC 的壓縮技術提供的硬件支持,Apple推薦在開發iPhone應用程序時使用 PVRTC 紋理。他們甚至提供了一篇很好的技術筆記描述了怎樣經過使用隨開發工具安裝的命令行程序將標準圖像文件轉換爲 PVRTC 紋理的方法。
你應該知道當使用 PVRTC 時與標準JPEG或PNG圖像相比有可能有些圖像質量的降低。是否值得在你的程序中作出一些犧牲取決於一些因素,但使用 PVRTC 紋理能夠節省大量的內存空間。
儘管由於沒有Objective-C類能夠解析 PVRTC 數據獲取其寬和高的信息,你須要手工指定圖像的高和寬,但加載 PVRTC 數據到當前綁定的紋理實際上甚至比加載普通圖像文件更爲簡單。
下面的例子使用默認的texturetool設置加載一個 512×512 的PVRTC紋理:
工具
1 NSString *path = [[NSBundle mainBundle] pathForResource:@"texture" ofType:@"pvrtc"]; 2 NSData *texData = [[NSData alloc] initWithContentsOfFile:path]; 3 4 // This assumes that source PVRTC image is 4 bits per pixel and RGB not RGBA 5 // If you use the default settings in texturetool, e.g.: 6 // 7 // texturetool -e PVRTC -o texture.pvrtc texture.png 8 // 9 // then this code should work fine for you. 10 glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG, 512, 512, 0, [texData length], [texData bytes]);
就這麼簡單。開發工具
使用glCompressedTexImage2D()從文件加載數據並傳送給OpeNGL ES。而隨後怎樣處理紋理則絕對沒有任何區別。this