Tengo una aplicación simple. Tiene dos hilos, cada uno con su propio contexto de representación, pero comparten un VBO (esto está funcionando, lo probé).
Ahora lo que quiero: un hilo está procesando algunos datos de la primera mitad del VBO y el segundo hilo está actualizando la segunda parte del VBO.
Cuando no actualizo el VBO, funciona bien.
Pero tengo algunos problemas extraños al actualizar. Cuando uso glMapBuffer
para actualizar el VBO (en el segundo hilo), en el primer hilo, la mayoría de las veces, no muestra nada: toda la pantalla está clara (después de una glClear
llamada). Parece que no puede tocar los datos del VBO (esto es comprensible, porque todo el búfer está asignado y, por lo tanto, puede bloquearse de alguna manera).
Traté de usar glMapBufferRange
, que usa GL_MAP_UNSYNCHRONIZED_BIT
. Esto debería significar, "no esperes y usa el VBO como quieras, yo (el programa) lo sincronizaré por mí mismo". Además, cuando mapeo un rango de VBO y renderizo datos de otra parte, no debería estar esperando, pero estoy experimentando los mismos problemas que tengo glMapBuffer
.
¿Alguien puede ayudarme a arreglar esto o explicar por qué sucede?
fuente