Frage

Zur Zeit habe ich das Mischen und Tiefe wiederum Testen auf ein 2D-Spiel. Wenn ich meine Texturen zeichnen, die „obere“ einen Teil der unteren Texturen, wenn sie sich schneiden Textur entfernen. Offensichtlich transparente Pixel der Texturen berücksichtigt der Tiefentest genommen, und es lösche alle Farben der gezogenen unteren Texturen, wenn sie sich schneiden. Außerdem sind Alpha blendings falsch wiedergegeben. Gibt es irgendeine Art von Funktionen, die OpenGL nicht sagen können, umfassen transparente Pixel in eine gründlichere Prüfung?

War es hilfreich?

Lösung

Nein ist es nicht möglich. Dies gilt für alle Hardware-Tiefenprüfung.

GL (Voll- oder ES - und D3D) haben alle das gleiche Modell - sie malen in der gewünschten Reihenfolge Polygone angeben. Wenn Sie Polygon A vor dem Polygon B ziehen und logisch Polygon A vor auf Polygon B sein sollten, wird Polygon B nicht gestrichen werden (mit freundlicher Genehmigung des Tiefentest).

Die Lösung ist, dass Sie Polygone in der Reihenfolge von den am weitesten am nächsten zu der aktuellen Ansicht Ursprung zu ziehen. Zum Glück in eines dieser 2D-Spiel sollte nur eine einfache Art sein (man wohl man sehr oft nicht einmal brauchen zu tun).

In 3D-Spielen BSPs sind die grundlegende Lösung für dieses Problem.

Andere Tipps

glEnable( GL_ALPHA_TEST );
glAlphaFunc( GL_EQUAL, 1.0f );

Damit werden alle Pixel mit einem Alpha von etwas anderes als völlig undurchsichtig verwerfen. Diese Pixel werden dann nicht auf den Z-Buffer gerendert werden. Dies hat jedoch Auswirkungen auf verschiedene Z-Buffer-Pipeline Optimierungen, so dass es einige ernsthafte Verlangsamungen verursachen kann. verwenden Sie es nur, wenn Sie wirklich zu haben.

Wenn Sie Shadern verwenden, versuchen Sie Blending zu deaktivieren und verwerfen die Pixel mit alpha 0

if(texColor.w == 0.0)
    discard;

Welche Art von Mischung verwenden Sie?

glEnable(GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

Sollten irgendwelche Fragmente mit Alpha von 0 hindern in den Tiefenpuffer geschrieben werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top