Jaka jest koncepcja i różnice między buforem ramki i Renderbufferem w OpenGL?

Jestem zdezorientowany co do koncepcji Framebuffer i Renderbuffer. Wiem, że są wymagane do renderowania, ale chcę je zrozumieć przed użyciem.

Wiem, że do przechowywania tymczasowego wyniku rysowania wymagany jest bufor bitmapowy. Tylny bufor. A drugi bufor musi być widoczny na ekranie, gdy te rysunki są w toku. Przedni bufor. Odwróć je i narysuj ponownie. Znam to pojęcie, ale trudno połączyć te obiekty z tym koncepcja.

Jaka jest ich koncepcja i różnice?

Author: Cœur, 2010-02-06

2 answers

Ta strona ma pewne szczegóły, które myślę, że wyjaśniają różnicę całkiem ładnie. Po pierwsze:

Ostateczny cel renderowania potoku OpenGL nazywa się [THE] bufor ramek .

}

Renderbuffer Object
Ponadto obiekt renderbuffer jest nowo wprowadzony do renderowania poza ekranem. Umożliwia renderowanie sceny bezpośrednio do obiektu renderbuffer, zamiast renderowania do obiektu tekstury. Renderbuffer jest po prostu obiektem przechowywania danych zawierającym pojedynczy obraz wewnętrznego formatu renderowalnego. Jest on używany do przechowywania buforów logicznych OpenGL, które nie mają odpowiedniego formatu tekstur, takich jak szablon lub bufor głębi.

 62
Author: ChrisF,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-06 12:33:20

Obiekt Framebuffer w rzeczywistości nie jest buforem, ale obiektem agregatora, który zawiera jeden lub więcej załączników, które z kolei są faktycznymi buforami. Możesz zrozumieć bufor ramki jako strukturę C, gdzie każdy element jest wskaźnikiem do bufora. Bez żadnego załącznika obiekt Bufor ramek ma bardzo małą powierzchnię.

Teraz każdy bufor dołączony do bufora ramki może być Renderbufferem lub teksturą.

The Renderbuffer jest rzeczywistym buforem (tablicą bajtów, liczb całkowitych lub pikseli). Bufor przechowuje wartości pikseli w natywnym formacie, dzięki czemu jest zoptymalizowany do renderowania poza ekranem. Innymi słowy, rysowanie na Renderbufferze może być znacznie szybsze niż rysowanie na teksturze. Wadą jest to, że piksele używają natywnego, zależnego od implementacji formatu, dzięki czemu odczyt z bufora Renderbuffera jest znacznie trudniejszy niż odczyt z tekstury. Niemniej jednak, raz a renderbuffer został pomalowany, można skopiować jego zawartość bezpośrednio na ekran (lub na inny Renderbuffer, tak myślę), bardzo szybko używając operacji transferu pikseli. Oznacza to, że Renderbuffer może być użyty do efektywnej implementacji wzorca podwójnego bufora, o którym wspomniałeś.

Renderbuffery są stosunkowo nową koncepcją. Przed nimi, Bufor ramek był używany do renderowania tekstury , która może być wolniejsza, ponieważ Tekstura używa standardowy format. Nadal można renderować teksturę, co jest bardzo przydatne, gdy trzeba wykonać wiele przejść nad każdym pikselem, aby zbudować scenę lub narysować scenę na powierzchni innej sceny!

OpenGL wiki ma tę stronę , która pokazuje więcej szczegółów i linków.

 204
Author: fernacolo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-23 04:35:51