5 Stimmen

Tiefenpuffer-Histogramm-Textur mit GLSL erstellen

Ich verwende den Tiefenpuffer des aktuellen Kontexts, um eine Textur zu beeinflussen, die ich anzeige. Die Textur ist 1 dimensional und in Graustufen. Von links nach rechts bedeutet von nah nach fern. Je mehr Pixel sich in einer bestimmten Tiefe befinden, desto heller ist die Textur an diesem Punkt, wobei schwarz bedeutet, dass sich keine Pixel in dieser Tiefe befinden und weiß bedeutet, dass sich alle Pixel in dieser Tiefe befinden.

Jetzt habe ich eine Lösung, die Folgendes tut glReadPixels() auf den Tiefenpuffer, analysiert ihn auf der CPU und schreibt ihn dann zurück in die Textur. Dies ist natürlich ein echter Engpass in der Anwendung.

Ich bin auf der Suche nach einer All-GPU-Lösung, bei der der Tiefenpuffer in einem Shader oder ähnlichem analysiert wird und die Textur auf diese Weise aktualisiert wird. Ich dachte an die Erstellung eines Fragment-Shaders, der den Tiefenwert liest und auf das entsprechende Pixel in der Textur erhöht, aber das würde voraussetzen, dass Fragment-Shader auf andere Texturen schreiben können. Etwas, von dem ich gelernt habe, dass es ein No-No ist, vor allem, wenn sie auf denselben Pixel schreiben müssen.

Gibt es einen Trick oder eine Technik, die ich übersehe, oder bin ich gezwungen, die CPU mit einzubeziehen?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X