2009-07-22 13 views
2

Ich versuche, PVRTC-Bilder anstelle von PNGs zu verwenden. Das Problem ist, dass ich sie nicht zuordnen kann.Problem mit PVRTC Texturen

Hier ist mein Code:

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]; 

ich diesen Befehl verwenden, um die komprimierten Texturen zu erstellen:

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

glGetError() kehrt 1281 (gescheitert Textur zu binden). Wenn ich jedoch mit glIsTexture() überprüfen, wird True zurückgegeben.

Irgendwelche Ideen? Oh, und ich benutze OpenGL ES auf dem iPhone.

+0

Kann es sein, dass ich stattdessen GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG verwenden sollte (Fehler 1281 bedeutet ungültige Enumeration)? Ich kann es jetzt nicht versuchen, aber ich werde es später versuchen – Istvan

Antwort

2

Nachdem ich die -f PVR Option aus dem Codierungsverfahren entfernt, ich war in der Lage, die Textur zu laden und zeigen Sie es mit RGBA-Option. Interessanterweise wurde diese Kodierungsbefehlszeile aus einem von Apples Beispielprogrammen entnommen ...

+5

Das -f-PVR-Flag weist das Tool an, den PVRTC-Daten eine Kopfzeile hinzuzufügen, die die Bildhöhe und -breite und ein paar andere Dinge enthält. Wenn Sie dieses Flag verwenden, müssen Sie den Header parsen und überspringen und die Daten danach an OpenGL senden. –