Mam zadanie zaimplementowania pozaekcyjnego renderera OpenGL zarówno dla Window'a jak i Linuxa w C++ Mam taką wersję napisaną już w Javie używając LWJGL lib.There użyłem obiektu PBuffer, który pod maską tworzy Pbuffery oparte na używanym systemie operacyjnym. Najpierw pomyślałem o ponownym wdrożeniu pełnej logiki tworzenia PBuffer, tak jak to zrobiłem w natywnym źródle LWJGL. Potem czytam post na this na StackOverflow.com, gdzie sugeruje się użycie standardowego tworzenia kontekstu, powiedzmy, używając GLFW (która jest platformą międzyplatformową), ale nie do utworzenia rzeczywistego okna. Czy jest to właściwa droga? Jakie są plusy i minusy w porównaniu do używania Pbuffera w takim przypadku?Tworzenie wieloplatformowego kontekstu OpenGL poza ekranem
Aktualizacja: Chcę tylko podkreślić, że używam FBOs do renderowania klatek więc mój problem nie jest tu jak renderowanie w trybie poza ekranem, ale jak stworzyć kontekst bez okna zarówno w systemach operacyjnych Windows i Linux.
Zgadza się. Zakładam, że korzystam z FBO. Ale FBO nie tworzą kontekstu GL, dlatego właśnie zadaję to pytanie. –
Jeśli chcesz przyspieszyć sprzęt, przynajmniej w systemie Windows, nie możesz utworzyć kontekstu OpenGL bez uprzedniego utworzenia okna (ukrytego). Dzieje się tak, ponieważ [wglCreateContext] (http://msdn.microsoft.com/en-us/library/windows/desktop/dd374379 (v = vs.85) .aspx) oczekuje kontekstu urządzenia (DC) i tylko DC w oknie może mieć przydzielony sprzętowo przyspieszony format pikseli. W szczególności [nie można renderować za pomocą sprzętowo przyspieszonej biblioteki OpenGL w pamięci DC] (http://www.opengl.org/discussion_boards/showthread.php/161374-Wi -can-ti-write-to-a-memory-device -context? p = 1143832 i viewfull = 1 # post1143832). – sschuberth
Więc masz na myśli Windows wersja PBuffer w LWJGL tworzy okno mimo to, a następnie usuwa go? –