Wie werden Pixel auf dem Bildschirm direkt aus einem RAW-Array von RGB-Werten schneller als SetPixel () angezeigt?

8

Ich mache gerne "Animationen" in C ++, wie zB einen MandelBrot Set-Zoom, Game of Life Simulator usw., indem Pixel Pixel für Frame direkt auf den Bildschirm gesetzt werden. Der Befehl SetPixel () macht dies unglaublich einfach, obwohl es leider auch sehr langsam ist. Hier ist die Art der Einrichtung, die ich für jeden Rahmen verwende, wenn ich den gesamten Bildschirm mit dem Inhalt des Arrays R malen möchte:

%Vor%

Auf meinem Rechner dauert dies fast 5 Sekunden, weil SetPixel () mehr als eine Million Mal aufgerufen wird. Im besten Fall könnte ich 100x schneller laufen lassen und eine glatte 20fps-Animation erhalten.

Ich höre, dass die Umwandlung von R in eine Bitmap-Datei in irgendeiner Weise und dann mit BitBlt, um den Rahmen in einem sauberen Befehl anzuzeigen, der Weg zu gehen ist, aber ich habe keine Ahnung, wie dies für meine Einrichtung zu implementieren und würde sehr begrüßen Hilfe.

Wenn es relevant ist, verwende ich Windows 7 und verwende Code :: Blocks als meine IDE.

    
Can_of_awe 23.09.2014, 22:32
quelle

1 Antwort

7

Nach den Ratschlägen von Remy habe ich diese Art der Pixelmatrix gezeigt (für Leute, die Code als Beispiel brauchen):

%Vor%     
Himjune 29.06.2015, 19:16
quelle

Tags und Links