2009-03-25 14 views
3

Ich arbeite an einem Shadow Mapping-Algorithmus, und ich möchte die Tiefe Karte debuggen, die es bei seinem ersten Durchlauf erzeugt. Tiefenstrukturen scheinen jedoch nicht korrekt in das Ansichtsfenster zu rendern. Gibt es eine einfache Möglichkeit, eine Tiefenstruktur als Graustufenbild anzuzeigen, vorzugsweise ohne einen Shader zu verwenden?Wie visualisiert man eine Tiefenstruktur in OpenGL?

+0

Können Sie uns zeigen, wie Sie es einrichten, so dass es nicht richtig funktioniert? Es gibt ein paar Möglichkeiten, dies zu tun, also wenn wir Ihr Problem lösen können, ist es einfacher, als dass Sie eine Menge fremden Code einpflegen müssen. –

Antwort

2

Tiefe Texturen (2D) können wie jede normale Graustufentextur verwendet werden. Das einzige Problem könnte sein, dass die Werte darin zu hoch sind und man nur eine weiße Textur sieht. Wenn das der Fall ist, spielen Sie mit den z-nahen und -fernen Ebenen, die beim Erstellen der Tiefenstruktur verwendet werden (oder skalieren Sie die Werte mit einem Shader oder vielleicht glTexEnv).

0

Sicher, binden Sie einfach Ihre Tiefenstruktur an Ihre Lieblingstextureinheit, aktivieren Sie die Texturierung, und zeichnen Sie einen 2D Quad! Sie können das Quad auch so dimensionieren, dass es nur einen Teil des Bildschirms ausfüllt, damit Sie die Shadowmap in Echtzeit sehen können.

OpenGL hat auch Funktionen, die die Textur in ein Array für Sie kopieren können. Sie können dies als Bild speichern und es mithilfe eines Bildbetrachters anzeigen.

8

Sie müssen möglicherweise die Tiefen Texturparameter ändern, als Graustufen angezeigt werden:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_NONE) 
glTexParameteri(GL_TEXTURE_2D, GL_DEPTH_TEXTURE_MODE, GL_LUMINANCE) 

Sie können dann in der Regel die Textur als ‚normal‘ Graustufen 2d Textur verwenden, entweder über feste Funktion oder ein 'sampler2d' Shaderuniform.

+0

Aha, ich habe nicht gesehen, dass die ursprüngliche Frage so alt ist. Sowieso... – rotoglup

Verwandte Themen