2009-07-22 81 views
2

我想使用PVRTC圖像,而不是PNG的。問題是,我無法映射看到它們。問題使用PVRTC紋理

這裏是我的代碼:

glGenTextures(1, &bg1Texture); 
glBindTexture(GL_TEXTURE_2D, bg1Texture); 
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); 
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); 

NSString *path = [[NSBundle mainBundle] pathForResource:@"starfield_00" ofType:@"pvr"]; 
NSData *texData = [[NSData alloc] initWithContentsOfFile:path]; 

glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG, 512, 512, 0, [texData length], [texData bytes]); 

[texData release]; 

我使用這個命令來創建壓縮紋理:

texturetool -e PVRTC --bits-per-pixel-2 -o starfield_00.pvr -f PVR starfield_00.png 

glGetError()返回1281(沒有綁定紋理)。但是,如果我有glIsTexture檢查(),則返回true。

任何想法?哦,我在iPhone上使用OpenGL ES。

+0

它可以是我應該使用GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG代替(錯誤1281表示無效枚舉)?現在不能tryit,但我給它一個嘗試後 – Istvan 2009-07-23 09:04:12

回答

2

當我從編碼過程中刪除-f PVR選項後,我能夠加載紋理並使用RGBA選項顯示它。有趣的是這種編碼的命令行是從蘋果的示例程序之一獲得...

+5

的-f PVR標誌告訴添加一個頭到包含圖像的高度和寬度與一對夫婦的其他東西的PVRTC數據的工具。如果使用該標誌,則需要解析並跳過標題,然後將其後的數據發送到OpenGL。 – 2010-01-24 05:09:05