Je commence à travailler sur ma première application iPhone OpenGL, mais je suis tombé sur un petit problème. J'ai une petite texture TRES SIMPLE que je veux utiliser comme sprite dans un jeu en 2D, mais avec des pixels bizarres "aléatoirement" colorés en haut.OpenGL Les textures ES de PNG avec transparence sont rendues avec des artefacts étranges et me rendent fou!
http://i40.tinypic.com/2s7c9ro.png < - Screenshot ici
je reçois quelque sorte le sentiment que c'est la faute de Photoshop, donc si quelqu'un quelque chose qui s'il vous plaît laissez-moi savoir.
Si elle est photoshop pas alors il doit y avoir mon code ... Voici donc le code en question ...
- (void)loadTexture {
CGImageRef textureImage = [UIImage imageNamed:@"zombie0.png"].CGImage;
if (textureImage == nil) {
NSLog(@"Failed to load texture image");
return;
}
NSInteger texWidth = CGImageGetWidth(textureImage);
NSInteger texHeight = CGImageGetHeight(textureImage);
GLubyte *textureData = (GLubyte *)malloc(texWidth * texHeight * 4);
CGContextRef textureContext = CGBitmapContextCreate(textureData, texWidth, texHeight, 8, texWidth * 4, CGImageGetColorSpace(textureImage), kCGImageAlphaPremultipliedLast);
CGContextDrawImage(textureContext, CGRectMake(0.0, 0.0, (float)texWidth, (float)texHeight), textureImage);
CGContextRelease(textureContext);
glGenTextures(1, &textures[0]);
glBindTexture(GL_TEXTURE_2D, textures[0]);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, texWidth, texHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, textureData);
free(textureData);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
}
Cette fonction de mélange a donné les meilleurs résultats.
S'il vous plaît, laissez-moi savoir ce que vous pensez est faux.
Merci beaucoup, ce problème m'a rendu fou.
VOUS ÊTES GÉNIAL! Cette réponse me rend totalement heureux et a du sens pour moi! J'ai eu l'impression que ces objets étaient une sorte de mémoire, mais je n'y avais pas réfléchi. Merci encore beaucoup sooooooo! Vous réglez! –
* devenant rouge * ... content de pouvoir aider. –
MERCI aussi! Je ne pouvais pas comprendre pourquoi j'avais tous ces artefacts, maintenant ça a l'air génial. – mk12