Ich arbeite an einer Handschrift-Anwendung auf iOS. Ich habe das Beispielprojekt "GLPaint" aus der iOS-Dokumentation gefunden, das von OpenGL ES implementiert wurde, und ich habe etwas daran geändert.Wie vermeidet man Transparenzüberlappungen mit OpenGL?
ich die Berührungspunkte verfolgen und die Kurven zwischen den Punkten berechnen und Partikelbilder allein die Kurve ziehen, um es wie, wo der Finger Passby zu machen sieht.
Was ich bekam, ist eine durchgezogene Linie, die ziemlich gut aussieht. Aber jetzt möchte ich halbtransparentes Highlight anstelle von durchgezogener Linie zeichnen. Also ersetze ich das Partikelbild durch eine 50% ige Transparenz, ohne den Code zu ändern.
Result of 50% transparency particle image
Es ist etwas falsch mit Mischung.
I zeichnen drei Punkte, die die Halbtransparenz Teilchenbild verwenden und Kreuzungsbereich sollte 50% Transparenz halten.
Was ist die Lösung?
Das Problem besteht darin, dass Sie den Overdraw eliminieren müssen, der mit "Just Blending" nicht möglich ist. Sie könnten Tiefenpuffer (mit Alpha-Test) verwenden, aber das wird nicht richtig Antialias. Wenn Sie möchten, dass dies richtig antialiased ist, ist das nicht trivial, um richtig zu werden, zumindest nicht im allgemeinen Fall. Sie müssten zuerst einen zusätzlichen Framebuffer rendern und in einem zweiten Durchgang zusammensetzen. – Damon
Danke für Ihre Antwort. Ich bin ein Neuling für OpenGL, ich bin immer noch nicht klar über die meisten Konzepte in OpenGL. Ich denke, Antialias ist nicht das Problem. Könnten Sie bitte den Code mit weiteren Einzelheiten angeben? –