Ich bin verwirrt über das Konzept von Framebuffer und Renderbuffer. Ich weiß, dass sie gerendert werden müssen, aber ich möchte sie vor der Verwendung verstehen.
Ich weiß, dass ein Bitmap-Puffer erforderlich ist, um das temporäre Zeichnungsergebnis zu speichern. Der Rückpuffer. Der andere Puffer muss auf dem Bildschirm angezeigt werden, wenn diese Zeichnungen ausgeführt werden. Der vordere Puffer. Und drehe sie um und zeichne erneut. Ich kenne dieses Konzept, aber es ist schwierig, diese Objekte mit diesem Konzept zu verbinden.
Was ist das Konzept und die Unterschiede von ihnen?
opengl
rendering
framebuffer
eonil
quelle
quelle
Antworten:
Diese Seite enthält einige Details, die meiner Meinung nach den Unterschied recht gut erklären. Zuerst:
Wohingegen:
quelle
Das Framebuffer- Objekt ist eigentlich kein Puffer, sondern ein Aggregatorobjekt, das einen oder mehrere Anhänge enthält, die wiederum die eigentlichen Puffer sind. Sie können den Framebuffer als C-Struktur verstehen , bei der jedes Mitglied ein Zeiger auf einen Puffer ist. Ohne Anhang hat ein Framebuffer- Objekt einen sehr geringen Platzbedarf.
Jetzt kann jeder an einen Framebuffer angehängte Puffer ein Renderbuffer oder eine Textur sein .
Der Renderbuffer ist ein tatsächlicher Puffer (ein Array von Bytes oder Ganzzahlen oder Pixeln). Der Renderbuffer speichert Pixelwerte im nativen Format und ist daher für das Rendern außerhalb des Bildschirms optimiert. Mit anderen Worten, das Zeichnen in einen Renderbuffer kann viel schneller sein als das Zeichnen in eine Textur. Der Nachteil ist, dass Pixel ein natives, implementierungsabhängiges Format verwenden, sodass das Lesen aus einem Renderbuffer viel schwieriger ist als das Lesen aus einer Textur. Sobald ein Renderbuffer gezeichnet wurde, kann man seinen Inhalt jedoch sehr schnell mithilfe von Pixelübertragungsvorgängen direkt auf den Bildschirm (oder auf einen anderen Renderbuffer , glaube ich) kopieren . Dies bedeutet, dass ein Renderbuffer kann verwendet werden, um das von Ihnen erwähnte Doppelpuffermuster effizient zu implementieren.
Renderbuffer sind ein relativ neues Konzept. Vor ihnen wurde ein Framebuffer verwendet, um eine Textur zu rendern , die langsamer sein kann, da eine Textur ein Standardformat verwendet. Es ist immer noch möglich, eine Textur zu rendern, und das ist sehr nützlich, wenn Sie mehrere Durchgänge über jedes Pixel ausführen müssen, um eine Szene zu erstellen oder eine Szene auf einer Oberfläche einer anderen Szene zu zeichnen!
Das OpenGL-Wiki enthält diese Seite mit weiteren Details und Links.
quelle