2011-01-24 14 views
6

Zastanawiam się nad refaktoryzacją dużej części mojego kodu renderowania i jedno pytanie pojawiło się w umyśle: Czy można renderować zarówno do ekranu, jak i do tekstury za pomocą wielu kolorowych załączników w buforze ramki? Nie mogę znaleźć żadnych informacji, jeśli byłoby to możliwe, nawet jeśli ma wiele użytecznych aplikacji. Przypuszczam, że powinno to wystarczyć, aby powiązać moją teksturę jako kolorową wtyczkę0 i renderuj bufor 0 z załącznikiem1?Czy jest możliwe dołączenie domyślnego bufora renderowania do pliku FBO?

Na przykład chcę zrobić interaktywną aplikację, w której można "narysować" na modelu 3D. Rozdzielam miejsce, w którym rysuje użytkownik, renderując współrzędne UV do tekstury, dzięki czemu mogę sprawdzić współrzędne myszy, gdzie zmodyfikować teksturę. W moim przypadku najszybszym będzie posiadanie modułu cieniującego, który w jednym przejściu przyciąga UV do tekstury i rzeczywistej tekstury na ekranie.

Czy są na to lepsze sposoby, czy jestem na dobrej drodze?

Odpowiedz

6

Nie ma czegoś takiego jak "domyślny bufor renderowania" w OpenGL. Dostępny jest domyślny system okienkowy bufor bufora o nazwie zastrzeżonej zero, ale w zasadzie oznacza to "brak opcji FBO". Więc nie, niestety normalny OpenGL nie zapewnia żadnej metody użycia swojego bufora kolorów jako kolorowego załącznika do jakiegokolwiek innego FBO. Nie znam żadnych rozszerzeń, które mogłyby zapewnić tę funkcję.

Z buforami renderowania jest również zarezerwowana nazwa zero, ale jest to tylko specjalna "żadna" zmienna i umożliwia cofanie wiązania buforów renderowania.

+3

Rzeczywiście. sekcja 4.4 glspec brzmi następująco: "Początkowo GL używa domyślnego bufora ramki, a pamięć, wymiary, alokacja i format obrazów dołączonych do tego bufora ramki są w całości zarządzane przez system okienny, a więc stan domyślnego bufora ramki, łącznie z jego obrazami, nie może być zmieniony przez GL, ani domyślny bufor ramki nie może zostać usunięty przez GL. " –

+0

oznacza to, że nie można nawet dodać własnego bufora renderowania do domyślnego bufora ramki. Aby rozwiązać problem, w zależności od przypadku użycia, możesz spróbować wyszukać "gluUnProject", który zmienia współrzędne okna na współrzędne obiektu. –

+0

Dzięki za odpowiedzi. Domyślam się, że nie rozumiem domyślnego bufora ramki i "domyślnego bufora renderowania", który nie istnieje. – Andos

Powiązane problemy