Gleitkomma-Texturen in OpenGL ES 2.0 unter iOS, ohne sie auf [0, 1] zu klemmen

Ich brauche gl_FragColor, um Fließkommawerte zu "zeichnen", die auch negativ sein können (x <0) und> 1,0. Ich möchte dann den Farbanhang des FBO verwenden, um diese Werte zu rendern und als Textur in einem anderen FBO zu verwenden. Jetzt habe ich weiter gelesenhttp://www.khronos.org/opengles/sdk/docs/man/ (unter glTexImage2D), dass alle Werte auf einen Bereich von [0, 1] geklemmt sind und ich auch keine glClampColor-Anweisung gefunden habe. Gibt es eine Möglichkeit, hier eine Problemumgehung zu finden, oder hat jemand eine Idee, die mir bei meinem Problem helfen könnte? :)

Gelöst

Es ist möglich und die Werte werden bei Verwendung von Gleitkomma-Texturen überhaupt nicht auf [0, 1] geklemmt, aber es funktioniert nur mit GL_HALF_FLOAT_OES als internem Format der Textur. Die Verwendung von GL_FLOAT führt stattdessen zu einem unvollständigen Framebuffer-Objekt, was sehr traurig ist, da ich eine Summed Area Table (SAT) erstellt habe und hier ein großes Genauigkeitsproblem aufgetreten ist. Im Allgemeinen scheint es, dass auf dem iPad2 nur halbe Genauigkeit (2 Bytes, 1 Vorzeichenbit + 5 Exponentenbits + 10 Brüche) Gleitkommazahlen unterstützt werden.

Funktionierende Erstellung der Farbanhangstextur des FBO

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_HALF_FLOAT_OES, NULL);

Noch etwas zu erwähnen: Instrumente melden eine Meldung "Ungültige Aufzählung für Argument 'Typ'", aber es funktioniert trotzdem. Außerdem verwendet der Simulator Texturen mit voller Genauigkeit anstelle der angegebenen halben Genauigkeit (ich glaube, weil es in C keinen solchen Datentyp gibt). Dies ist der Grund, warum u wahrscheinlich Probleme mit der Genauigkeit des Simulators verursacht.

Am verwirrendsten ist jedoch, dass "GL_OES_texture_float" beim Drucken von glGetString (GL_EXTENSIONS) unterstützt wird. Wie bereits erwähnt, funktioniert es jedoch nicht.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage