Załóżmy, że mam aplikację A
, która jest odpowiedzialna za malowanie rzeczy na ekranie za pośrednictwem biblioteki OpenGL
. Aby zapewnić ścisłą integrację, chciałbym, aby ta aplikacja mogła wykonywać swoje zadanie, ale renderować ją w FBO lub bezpośrednio w buforze renderowania i zezwalać aplikacji B
na dostęp do tego bufora tylko do odczytu, aby obsłużyć ekran na ekranie (zasadniczo renderowanie go jako tekstury 2D).Udostępnianie bufora ramki/bufora renderowania OpenGL między dwiema aplikacjami
Wygląda na to, że pliki FBO należą do kontekstów OpenGL, a konteksty nie są współdzielone między procesami. Zdecydowanie rozumiem, że zezwalanie na kilka procesów dwóch nieporządków w tym samym kontekście jest złe. Ale w moim konkretnym przypadku myślę, że to jest całkiem bezpieczne.
UWAGA:
Zastosowanie A
jest QApplication
oraz zastosowanie B
jest native win32
jeden
Edycja:
renderowania rozmiar jest prawie pełnym ekranie, to myśli buforu 2048x2048 32bits
(I don na razie używaj kanału alfa, ale dlaczego nie drugi).
Czy aktualizacja w czasie rzeczywistym jest wymagana? Możesz napisać renderowany obraz do pliku i załadować go do B. Co więcej, udostępnianie FBO w OpenGL nie jest takie proste. Może możesz udostępniać bufory na poziomie GPU. –
@Jeroen Wymagany jest czas rzeczywisty ... Próbowałem ograniczyć zakres pytania, aby nie zająć się problemem synchronizacji zbyt wcześnie, ale masz rację, to jest ważne :) – vrince