2009-06-06 2 views
1

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?

+1

Können wir einen Screenshot haben? – zoul

Antwort

5

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 :-)

+0

Super das funktioniert! Vielen Dank :-) – MrDatabase

+0

Danke, habe eine Weile damit verbracht, dieses eine mit verschiedenen Kombinationen herauszufinden. –

1

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.

+0

Texture2D sollte sich um die Nicht-Pot-Bilder kümmern. – zoul

+0

Sollte vielleicht. Tut es aber nicht. Zumindest nicht die Texture2D von CrashLanding, die ich hatte. – Nosredna