Das macht ja eben dieser
OpenGL Code.
Angenommen ich mache das in der CPU, also
r = y + 1.402 * v;
g = y - 0.344 * u - 0.714 * v;
b = y + 1.772 * u;
Dann ist das extrem langsam. Selbst mit Festkomma zu hantieren und/oder Tabellen zu nutzen ist lahm. Die Idee ist das ganze auf der GPU zu machen und das geht auch, wenn ich ein
OpenGL Fenster nutze und dort die Textur mit Shadern versehe.
Sobald Firemonkey ins Spiel kommt, geht das aber nicht mehr. Ich müsste in dem Firemonkey Klassen manuell die Möglichkeit für Nicht RGBA Texturen einbinden und an einigen Stellen den Code patchen. Dann könnte man einen TMaterialSource mit einem TForm3D nehmen. Ich glaube da gab es aber mit dem neuen Delphi ein Problem auf den Mobilen Plattformen. Stand hier irgendwo im Link.
Am liebsten wäre mir das auf einer TForm zu machen. Also eine Komponente die Y U und V Daten gebe und diese dann mit einem GPU Shader das dann rendert.