Also versuche ich ein bestimmtes Pixel eines Sprites zu ändern. Derzeit habe ich es geschafft, indem ich mir selbst eine SetPixel(int x, int y, Color color)
Funktion erstellt habe. Es funktioniert, indem Texturinformationen (RGBA-Werte) geändert und dann an ein Sprite übergeben werden. Aber das ist langsam:OpenGL SetPixel mit einem Fragment Shader
1) Mit CPU anstelle von GPU wo (ich hoffe) Ich könnte Shader verwenden, um meine Leistung zu verbessern.
2) Ich muss die geänderte Textur jedes Mal neu hochladen, wenn ich ein einzelnes Pixel modifiziere.
Diese Frage ist groß für mich. Wie verwende ich Shader, um ein bestimmtes Pixel zu modifizieren? Ich kann nur die Farbe pro Vertex ändern, was ich nicht möchte.
Irgendwelche Vorschläge?
Fragment Shader ändert alle Pixel in einem Framebuffer (wenn Sie drawElements oder drawArrays aufrufen), nicht nur ein einzelnes Pixel. Wenn sich der neue Farbwert in Ihrem CPU-Programm befindet, können Sie ihn entweder in die GPU-Textur hochladen oder als konstante Variable in Ihrem Fragment-Shader festlegen. –
Sind Sie sicher, dass Sie nicht mehrere Pixel gleichzeitig ändern möchten? Das Hochladen von 1 Pixel auf die GPU ist ebenso komplex wie das Hochladen von 1000000 Pixeln. –
Vorschlag: Löschen Sie Ihre 'SetPixel'-Funktion und finden Sie heraus, wie Sie ohne das tun können, was Sie tun. – ybungalobill