opengl - tutor - que es opencv
Usar objetos de sincronización de cercas en OpenGL (1)
Estoy tratando de buscar escenarios donde los Objetos de Sincronización se puedan usar en OpenGL. Tengo entendido que un objeto de sincronización una vez puesto en la secuencia de comandos GL (usando glFenceSync ()) se señalará después de que se ejecuten y realicen todos los comandos GL. Si los objetos de sincronización son primitivos de sincronización, ¿por qué no podemos MANUALMENTE señalizarlos? ¿Dónde exactamente esta funcionalidad puede ayudar al programador GL?
¿El siguiente escenario es correcto?
Thread 1 :
Load model
Draw()
glFenceSync()
Thread 2 :
glWaitSync();
ReadPixels
Use data for subsequent operation.
¿Esto significa que no puedo iniciar el subproceso 2 a menos que se llame a glFenceSync () en el subproceso 1?
Las vallas no están destinadas a sincronizar hilos, sino a saber cuándo finalizan las operaciones asincrónicas. Por ejemplo, si hace un glReadPixels
en un objeto de búfer de píxeles (PBO), le glReadPixels
que sepa que la lectura se ha completado, incluso antes de intentar leer o asignar el espacio de direcciones de PBO al cliente.
Si haces un glReadPixels
con un PBO como objetivo, la llamada volverá de inmediato, pero la transferencia de datos puede tardar un tiempo. Ahí es donde las vallas son útiles.