Doublebuffering
-
Ich lege mir 2 Bufferstrukturen an. Wie schreibe ich dann in den ersten Buffer, der zweite soll ja erst einmal gar nicht betrachtet werden?
-
int buffer1[size];
int buffer2[size];buffer1[pos_x*size_x+pos_y] = farbe;
memcpy(buffer1, buffer2, size);Gerne, wie schon erwähnt, verwendet als Framebuffer.
-
Willst du Grafik machen? Wenn ja, was, welcher Mode und welcher Compiler?
-
Ich möchte eine Kameraprogrammierung machen. Dabei sollen Zeilen der Kamera in den ersten Buffer eingezogen werden, folgende struktur hab ich für den ersten Buffer:
typedef struct BufferInfo1_tag
{
LONG Filled;
lbufFrameBuffer_t* Buffer;
}BufferInfo1_t;Und wenn dieser Buffer voll ist, soll in den zweiten geschrieben werden.
Ich verwende Borland C++!
-
Wenn es irgendwie irgendwo etwas gutes zum lesen dazu gibt, würde mich das auch freuen, wenn mir jemand einen Tip geben kann wo ich sowas nachlesen kann!
-
Einfach zwei (Grafik-)Buffer. Einer wird geändert und einer wird präsentiert. Dann werden beiden vertauscht. So fällt die Bearbeitung nie auf.
Bye, TGGC (Denken, und gut ist.)
-
evtl. so?
typedef char camBuf[352*288]; typedef camBuf *pcamBuf; ... int main () { camBuf a, b; pcamBuf front, back; front = &a; back = &b; while (true) { display (front); // den Frontbuffer darstellen modify (back); // den Backbuffer bearbeiten swap (front, back); // front = back und back = front handleEvent(...); } }
so ungefähr könnte es laufen. Die einzelnen funktionen solltest du eigentlich selber hibekommen...
Allerdings sag ich dir gleich, dass es langsam wird, da ständig einige KB vom RAM in den Grafikspeicher transportiert werden...
-
TGGC|Work schrieb:
Einfach zwei (Grafik-)Buffer. Einer wird geändert und einer wird präsentiert. Dann werden beiden vertauscht. So fällt die Bearbeitung nie auf.
Bye, TGGC (Denken, und gut ist.)
Bitte Lesen.Danke
-
@DocJunior: danke für deine Antwort, aber ich habe eine Klasse und verschiedene Funktionen die ich mit Leben erfüllen muss. Die Bufferstruktur, die ich weiter oben geschrieben habe, ist in meiner Klasse festgelegt und nun muss ich nur die Sachen alle allokieren, um dann in sie hineinzuschreiben. Und zu schauen ob der Buffer voll ist.
-
War ja auch nicht so gemeint, dass du es kopierst und es läuft. Hab dir ja nur versucht zu erklären, wie ich es machen würde..
-
das war mir schon klar. Danke dafür. Nur ist das hier glaub ich ein etwas anderesn Prinzip