Ich versuche, eine Tiefenstruktur in einen Compute-Shader aufzunehmen und in eine andere Textur zu kopieren.
Das Problem ist, dass ich keine korrekten Werte bekomme, wenn ich von der Tiefenstruktur lese:
Ich habe versucht zu überprüfen, ob die Anfangswerte der Tiefenstruktur korrekt waren (mit GDebugger), und sie sind. Es ist also die imageLoad GLSL-Funktion, die falsche Werte abruft.
das ist mein GLSL Compute Shader:
%Vor%und so erstelle ich die Tiefenstruktur und die Farbtextur:
%Vor%Ich fülle die Tiefenstruktur mit Tiefenwerten (binde sie an einen Bildpuffer und rende die Szene) und rufe dann meinen Compute Shader auf:
%Vor%mit:
Haben Sie eine Ahnung, warum ich keine gültigen Tiefenwerte bekomme?
BEARBEITEN:
So sieht die Farbtextur beim Rendern einer Kugel aus:
IMG http://i41.tinypic.com/2rqll4l.png
und es scheint, dass glClear (GL_DEPTH_BUFFER_BIT) nichts tut: Auch wenn ich es juste vor dem glDispatchCompute () anrufe habe ich immer noch das selbe Bild ... Wie kann das möglich sein?
Tatsächlich habe ich festgestellt, dass Sie eine Tiefenstruktur nicht als Bild an einen Compute Shader senden können, auch nicht mit dem Schlüsselwort readonly.
Also habe ich ersetzt:
%Vor%von:
%Vor%und in meinem Compute-Shader:
%Vor%von:
%Vor%und um es zu probieren schreibe ich einfach:
%Vor%und es funktioniert sehr gut so