2009-07-22 9 views
2

J'essaie d'utiliser des images PVRTC au lieu de PNG. Le problème est que je ne suis pas capable de les voir.Problème d'utilisation des textures PVRTC

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

J'utilise cette commande pour créer les textures compressées:

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

glGetError() rendements 1281 (ne se lie pas la texture). Cependant, si je vérifie avec glIsTexture(), il retourne vrai.

Des idées? Oh et j'utilise OpenGL ES sur l'iPhone.

+0

Est-ce que je devrais plutôt utiliser GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG (Erreur 1281 signifie enum invalide)? Je ne peux pas essayer maintenant, mais je vais essayer plus tard – Istvan

Répondre

2

Après avoir supprimé l'option -f PVR de la procédure de codage, j'ai pu charger la texture et l'afficher avec l'option RGBA. Il est intéressant de noter que cette ligne de commande d'encodage provient d'un exemple de programme d'Apple ...

+5

l'indicateur -f PVR indique à l'outil d'ajouter un en-tête sur les données PVRTC qui contient la hauteur et la largeur de l'image et quelques autres choses. Si vous utilisez ce drapeau, vous devez analyser et ignorer l'en-tête et simplement envoyer les données après lui à OpenGL. –

Questions connexes