Je commence à travailler sur ma première application iPhone OpenGL, mais j'ai frappé un spray précoce.
J'ai une petite texture très simple que je veux utiliser comme un sprite dans un jeu 2D, mais il rend Avec des pixels de couleur «aléatoirement» bizarre de haut en haut. p>
http: //i40.tinyypic. com / 2s7c9ro.png <- Capture d'écran ici P>
Je pense avoir le sentiment que c'est la faute de Photoshop, alors si quelqu'un à ce sujet s'il vous plaît faites le moi savoir. P>
Si ce n'est pas Photoshop, il doit être mon code ... Voici donc le code en question ... p> } p> Cette fonction de mélange a donné les meilleurs résultats. P> S'il vous plaît, permettez-moi de savoir ce que vous pensez être faux. P> Merci beaucoup, ce problème m'a conduit à Noix. P> P> P >
3 Réponses :
Un problème que je peux voir à partir du code est que vous n'effectuez pas votre contexte avant de dessiner l'image. Étant donné que votre image contient des zones transparentes et est composée à l'arrière-plan, vous voyez simplement ce qui est dans la mémoire allouée par Malloc. Essayez de définir le mode de mélange de quartz pour copier avant de dessiner l'image: Vous pouvez également utiliser calloc au lieu de malloc, car CalloC vous donne la mémoire à zéro. P> Votre mélange opengl est correct: p> vous donne Porter-duff "sur", ce que vous voulez habituellement. p> p>
VOUS ÊTES GÉNIAL! Cette réponse me rend totalement heureux et a du sens pour moi! J'avais eu le sentiment que ces artefacts étaient une sorte de gauche sur la mémoire mais je ne l'avais pas pensé. Merci encore beaucoup Sooooooo! Vous réglez!
Tourner le rouge i> ... content de pouvoir aider.
Merci aussi! Je ne pouvais pas comprendre pourquoi j'ai eu tous ces artefacts, maintenant ça a fière allure.
Essayez d'effacer votre CGContextref d'abord:
CGContextSetRGBFillColor(ctxt, 1, 1, 1, 0); CGContextFillRect(ctxt, CGRectMake(0, 0, w, h));
La plupart probablement votre image a des pixels colorés avec une valeur alpha zéro, mais en raison de la fonction de mélange, vous leur montrez. Essayez
Ce mélange Func ne donne de bons résultats que pour les non-prémultes alpha, qui est rarement en quartz.