Frage

Ich habe mit dem Tiefenpuffer in OpenGL (JOGL) arbeitet, um sicherzustellen, bestimmte Elemente vor anderen gemacht werden, indem die Tiefenpuffer zu deaktivieren (detailliert in meiner vorherigen Frage: Java OpenGL Speicher Tiefenpuffer ).

Das funktioniert, außer wenn ich die Farbe eines Elements festgelegt, die gezogen wird, wenn der Tiefentest deaktiviert ist, keine der Material shininess zeigt nach oben. Das Element wird als eine dunklere Version der ursprünglichen Farbe wiedergegeben (es scheint, als gäbe es keine Lichtwirkung ist wirklich auf mich angewandt). Gibt es einen Grund, warum dies geschieht würde? und wie könnte ich das verhindern?

Danke, Jeff

War es hilfreich?

Lösung

Da Sie keine Antworten so weit gekommen, ich werde versuchen, ihm meine Chance zu geben, obwohl ich wirklich ein bisschen hier zu raten bin.

Ein paar Gründe, kann ich mir vorstellen, warum der Effekt, den Sie sehen passieren würde:

  • Im Gegensatz zur Umgebungs- und diffusen Komponente des Beleuchtungsmodelles, die Spiegelkomponente Bedürfnisse zu berücksichtigen, die Augenposition relativ zu dem Objekt und Lichtquelle. So wird dies wahrscheinlich schneller sein, wenn OpenGL den Tiefenpuffer verwendet. Ich gehe davon aus, dass auf diese Weise - für jedes Pixel gezogen werden - es den Tiefenwert verwenden könnte die Augenkoordinaten mit der z-Komponente zu beenden

  • .
  • Vielleicht ist es auch Lichtdämpfung zu tun? Wenn Lichtdämpfung verwendet wird, berechnet OpenGL die Entfernung, die das Licht zu reisen muss, bevor Ihr Auge erreicht (oder ist es zu vereinfachen, indem nur den Abstand zwischen der Licht Berechnung und dem Objekt? Ich bin sicher nicht.)

Also gehe ich davon aus, dass es nicht möglich ist, die Beleuchtung ohne Tiefenpuffer richtig zu verwenden. Ich glaube, Sie in Ihrem anderen Beitrag erwähnt, dass Sie nicht nur die Tiefenpuffer löschen können, weil sie mit dem Rest der Anwendung stören würde? Ich denke, es sollte eine Lösung mit Schablonen, etwas Ähnliches wie "10-1 Beispiel: Mit dem Stencil Test" sein in http://www.glprogramming.com/red/chapter10.html (es ist in C geschrieben, aber ich hoffe, dass es ähnlich ist in JOGL). Die Schablone würde einfach bar die restliche Anwendung von der Zeichnung über Ihre wertvollen Pixel.

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