Jestem zdezorientowany koncepcją Framebuffer i Renderbuffer. Wiem, że są wymagane do renderowania, ale przed użyciem chcę je zrozumieć.
Wiem, że do przechowywania tymczasowego wyniku rysowania wymagany jest bufor bitmapy. Bufor tylny. Drugi bufor musi być widoczny na ekranie, gdy te rysunki są w toku. Bufor przedni. I odwróć je i narysuj ponownie. Znam tę koncepcję, ale ciężko jest powiązać te obiekty z tą koncepcją.
Jaka jest ich koncepcja i jaka jest między nimi różnica?
opengl
rendering
framebuffer
eonil
źródło
źródło
Odpowiedzi:
Ta strona zawiera pewne szczegóły, które moim zdaniem całkiem ładnie wyjaśniają różnicę. Po pierwsze:
Natomiast:
źródło
Obiekt Framebuffer nie jest w rzeczywistości buforem, ale obiektem agregatora, który zawiera jeden lub więcej załączników, które z kolei są rzeczywistymi buforami. Możesz zrozumieć Framebuffer jako strukturę C, w której każdy element członkowski jest wskaźnikiem do bufora. Bez żadnego załącznika obiekt Framebuffer zajmuje bardzo mało miejsca.
Teraz każdy bufor dołączony do bufora ramki może być buforem renderowania lub teksturą .
Renderbuffer jest rzeczywisty bufor (tablica bajtów lub liczb całkowitych, lub pikseli). W Renderbuffer przechowuje wartości pikseli w formacie natywnym, więc jest zoptymalizowany do niewidocznej renderowania. Innymi słowy, rysowanie do Renderbuffera może być znacznie szybsze niż rysowanie do tekstury. Wadą jest to, że piksele używają natywnego formatu zależnego od implementacji, więc odczyt z Renderbuffera jest znacznie trudniejszy niż odczyt z tekstury. Niemniej jednak, po namalowaniu Renderbuffera , można skopiować jego zawartość bezpośrednio na ekran (lub , jak sądzę, do innego Renderbuffera ), bardzo szybko za pomocą operacji transferu pikseli. Oznacza to, że Renderbuffer można użyć do wydajnego zaimplementowania wspomnianego wzorca podwójnego bufora.
Renderbuffery to stosunkowo nowa koncepcja. Wcześniej do renderowania tekstury używano bufora ramki , co może być wolniejsze, ponieważ tekstura używa standardowego formatu. Nadal można renderować teksturę i jest to bardzo przydatne, gdy trzeba wykonać wiele przejść nad każdym pikselem, aby zbudować scenę lub narysować scenę na powierzchni innej sceny!
Wiki OpenGL ma tę stronę, która pokazuje więcej szczegółów i łączy.
źródło