E 'possibile condividere un oggetto framebuffer opengl tra contesti / discussioni?
-
10-10-2019 - |
Domanda
Voglio rendere la mia scena in un thread e quindi blit il risultato nella finestra di proprietà di un altro thread. Per evitare di leggere la parte posteriore framebuffer alla memoria della CPU, vorrei utilizzare un oggetto framebuffer. Finora non sono stato in grado di ottenere questo al lavoro (pasta bianca), che mi fa credere che questo non è supportato da OpenGL.
- E 'possibile oggetti framebuffer di condivisione tra i diversi contesti?
- È possibile condividere un oggetto framebuffer tra diversi thread, dato che l'oggetto è vincolata da un solo filo per volta?
Se qualcuno mi può indicare dove questo è descritto nella documentazione, che sarebbe un bonus.
Soluzione
Non è possibile condividere i framebuffer tra i diversi contesti. Vedere il primo comma, Appendice D, OpenGL 3.3 spec. Tuttavia, è possibile condividere le texture e renderbuffers, che dovrebbe dare si desidera è necessario.
Per quanto riguarda la filettatura: Dovrebbe essere possibile, ma non è generalmente consigliato di inviare comandi GL da più thread (perché è solo molto difficile da sincronizzare). Di solito, si dovrebbe copiare il contenuto di un pixel-buffer-oggetto e e la mappa dal thread GL, quindi utilizzare il puntatore mappato dal l'altro thread.