Potrzebuję renderować całkiem dużo (dziesiątki tysięcy) obrazów poza ekranem za pomocą OpenGL.
Używam systemu Windows i używam QT jako ramy. rozwiązanie może być tylko oknem, to naprawdę nie ma znaczenia.OpenGL: Szybkie renderowanie poza ekranem
Z tego co znalazłem za pomocą Google istnieje kilka opcji dla tej This article który wydaje się raczej stary zaproponować kilka sposobów, z których odpowiednie są:
- Okna specyficzny - Wykorzystanie
CreateDIBSection
i jakoś powiązać z nim teksturę. - Użyj rozszerzenia pbuffers, które wydaje mi się obsługiwane na mojej karcie.
This thread (Wiadomość 6) sugeruje QT specyficzny sposób robi to za pomocą QGLWidget::renderPixmap
Moje pytanie brzmi - co jeden byłby najszybszy sposób? pbuffery wydaje się być najbezpieczniejszym zakładem, ponieważ gwarantuje się, że zostanie wykonany na sprzęcie, ale nie używa metody CreateDIB, a także przechodzi przez sprzęt? A co z metodą QT? wydaje się, że z tym problemem powstaje jakiś problem związany z tworzeniem kontekstu. z pewnością nie chciałbym tworzyć nowego kontekstu dla każdego tworzonego przeze mnie obrazu.
Czy ktoś ma dobre doświadczenia z tym?
EDIT: Odpowiadając na komentarz -
mam stałą scenę, która nie zmienia w ogóle, a ja czynią je z różnych punktów widzenia. Na razie obrazy wracają do użytkownika i będą przetwarzane przez procesor. Być może w przyszłości będą one przetwarzane na GPU.
Skąd pochodzą obrazy? Czy wciąż renderujesz tę samą scenę, być może z różnych punktów widzenia? A może ładujesz teksturę po tekstury z dysku? A gdzie idą obrazy? Do obliczeń gpu? Na dysku? Twoja odpowiedź zależy od szczegółów. – ejgottl
Odpowiedziałem na pytanie – shoosh
Może ten link może być przydatny, tutaj użyłem obiektów bufora ramki z 'QGLFrameBuffer' http://stackoverflow.com/questions/19934102/qglwidget-and-fast-offscreen-rendering/ – linello