W jakich przypadkach chciałbym mieć załącznik renderbuffer w FBO OpenGL, zamiast załącznika tekstur, oprócz domyślnego bufora ramki? Jako, że przywiązanie do tekstury wydaje się dużo bardziej wszechstronne.Przetwarzanie bufora renderowania OpenGL FBO lub tekstura
Odpowiedz
Tekstury zapewniają więcej funkcji (pobieranie próbek !, odmiany formatów), a więc są bardziej narażone na utratę wydajności.
Odpowiedź jest prosta: użyj Tekstur wszędzie tam, gdzie musisz pobierać próbki z powierzchni (brak alternatyw).
Użyj Bufory do renderowania wszędzie tam, gdzie nie trzeba próbkować. Sterownik może, ale nie musi, zdecydować o bardziej efektywnym przechowywaniu danych pikseli w oparciu o wyrażoną intencję nie wykonywania próbkowania. Możesz użyć GL blitting później, aby coś zrobić z wynikiem.
Wreszcie, dobra, prosta odpowiedź na to proste pytanie. Dzięki. Wygląda na to, że wiele osób ma tylko wymyślne komentarze na ten temat (innymi słowy - nie wiedzą). –
Co oznacza * próbka z powierzchni *? Czy możesz podać bardziej konkretne przykłady, gdzie trzeba próbkować, a kiedy nie? – bluenote10
@ bluenote10 przez "sampling" mam na myśli sprawdzanie konkretnych wartości tekstury w module cieniującym. Aby uzyskać więcej informacji, zobacz "Funkcje wyszukiwania tekstur" na stronie https://www.opengl.org/wiki/Sampler_%28GLSL%29. Na przykład, jeśli chcesz coś zamazać, twój moduł cieniujący zazwyczaj wypróbuje obszar pikseli i waga je, więc potrzebujesz źródła tekstury. W drugim przypadku, jeśli chcesz tylko narysować coś za pomocą testu głębokości, możesz użyć bufora renderowania głębi. – kvark
Rozszerzenie pytania na OpenGL | ES, kolejnym powodem używania RenderBuffers zamiast tekstur jest również to, że tekstury mogą nie być obsługiwane w niektórych konfiguracjach i uniemożliwiają zbudowanie prawidłowego FBO. Szczególnie myślę o teksturach głębi, które nie są natywnie obsługiwane na niektórych urządzeniach, na przykład nVidia Tegra 2/3.
- 1. Udostępnianie bufora ramki/bufora renderowania OpenGL między dwiema aplikacjami
- 2. Czy jest możliwe dołączenie domyślnego bufora renderowania do pliku FBO?
- 3. Android OpenGL FBO poza ekranem
- 4. Rysowanie bufora renderowania poza ekranem w OpenGL ES (iPhone)
- 5. Kontekst OpenGL wewnątrz bufora Emacs
- 6. Przezroczysta tekstura OpenGL nad inną teksturą
- 7. iPhone OpenGl renderowania tekstu
- 8. Jaki jest najlepszy sposób na obsługę wiadomości FBO w OpenGL?
- 9. Jak utworzyć FBO z wykorzystaniem bufora szablonu w OpenGL ES 2.0?
- 10. Tekstura renderowania SDL2 widocznie pozostaje w tyle za myszką
- 11. Bufor wzorcowy OpenGL LUB operacja?
- 12. OpenGL lub OpenGL ES
- 13. OpenGL. Aktualizowanie bufora wierzchołków za pomocą glBufferData
- 14. Uzyskiwanie buforowego bufora szablonów OpenGL-ES
- 15. Jak renderować/rysować obiekt bufora do bufora ramki bez glDrawPixels
- 16. OpenGL - Jak uzyskać dostęp do wartości bufora głębokości? - Lub: gl_FragCoord.z vs. Renderowanie głębi do tekstury
- 17. OpenGL - Czy użyjesz spowolnionego renderowania VBO?
- 18. Różnica renderowania alfa między OpenGL a WebGL
- 19. Czy można renderować widok Androida do pliku FBO lub tekstury OpenGL?
- 20. Jakie kroki należy wykonać, aby renderować moją scenę do obiektu bufora ramki (FBO), a następnie renderować FBO na ekran?
- 21. OpenGL: Przedmioty są gładkie jeśli normalnie wyciągnąć, ale krawędziach przy renderowaniu do FBO
- 22. Analizator OpenGL ES w systemie iOS wyświetla "Nieistniejący załącznik ramki bufora ramki" i "Brakujący załącznik ramki bufora", ale narzędzie FBO działa
- 23. Jeden duży bufor wierzchołkowy OpenGL, lub wiele małych?
- 24. Replikacja ramek FBO do tekstury jest bardzo powolna, używając OpenGL ES 2.0 na Androida, dlaczego?
- 25. Łączenie FBO z domyślnym buforem ramki
- 26. SubTexturing openGL
- 27. Jak zmierzyć przetwarzanie CSS i czas renderowania w przeglądarce?
- 28. Asynchroniczne odczytywanie z bufora przedniego opengl przy użyciu wielu PBO
- 29. Renderowanie tekstur na iOS OpenGL ES-działa na symulatorze, ale nie na urządzeniu
- 30. Jaki jest właściwy sposób modyfikowania bufora wierzchołków OpenGL?
Zastanawiam się nad tym od dłuższego czasu. Domyślam się, że istniała baza starszych programów opartych na PBuffer, a niektórzy ludzie nie chcieli dostosować się do innej koncepcji (np. Napisać do tekstury zamiast pisać do PBuffer i skopiować), więc dokładna funkcjonalność PBuffera została ponownie zaimplementowana na górę FBO, aby zachęcić ich do korzystania z FBO. Naprawdę nie mogę wymyślić żadnego innego powodu, ponieważ załączniki renderowania nie są w ogóle użyteczne (starając się uniknąć mówienia "opóźniony"). Nie ma od razu oczywistego powodu, dla którego renderowanie do tekstury powinno być wolniejsze (lub dowolne inne). – Damon