Ich verwende die Texture2D-Klasse aus dem CrashLanding-Beispielcode. Ich bekomme merkwürdige Artefakte um meine Bilder im Simulator und im Telefon. Die Artefakte sind kleine graue Ränder um die Texturen herum. Die Ränder sind inkonsistent und umgeben nicht die gesamte Textur. Ich benutze PNGs.Wie kann ich Artefakte in meiner OpenGL ES iPhone App loswerden?
Antwort
Hey MrDatabase - Es klingt wie das Problem ist, dass Ihre Textur Bilder alpha vormultipliziert haben. Ich hatte dieses Problem auch auf dem iPhone - die PNG-Komprimierung, die beim Erstellen Ihrer App automatisch ausgeführt wird, multipliziert alle Alpha-Werte. Wenn Sie glBlend(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
verwenden, wenden Sie das Alpha zweimal an - versuchen Sie stattdessen, glBlend(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)
zu verwenden. Es gibt viele Sachen in den Apple Foren dazu :-)
Super das funktioniert! Vielen Dank :-) – MrDatabase
Danke, habe eine Weile damit verbracht, dieses eine mit verschiedenen Kombinationen herauszufinden. –
Sind Ihre Texturen alle Potenzen von zwei in Breite und Höhe? Wenn nicht, ist das wahrscheinlich dein Problem.
Ich hatte auch Probleme mit Texturen kleiner als eine bestimmte Größe. Ich erinnere mich, dass jemand gesagt hat, dass für kleine Texturen der Speicher gelöscht wird, nachdem er zugewiesen wurde. Das Ändern von malloc in Calloc in der Texture2D-Quelle behob das Problem.
Können wir einen Screenshot haben? – zoul