Eu tenho uma aplicação simples. Ele tem dois threads, cada um com seu próprio contexto de renderização, mas eles compartilham um VBO (isso está funcionando, eu testei).
Agora o que eu quero: Um segmento está processando alguns dados da primeira metade do VBO e o segundo está atualizando a segunda parte do VBO.
Quando não atualizo o VBO, está funcionando bem.
Mas tenho alguns problemas estranhos ao atualizar. Quando uso glMapBuffer
para atualizar o VBO (no segundo segmento), no primeiro segmento, na maioria das vezes, ele não processa nada - a tela inteira fica limpa (após uma glClear
chamada). Parece que não pode tocar nos dados do VBO (isso é compreensível, porque todo o buffer é mapeado e, portanto, pode ser bloqueado de alguma forma).
Eu tentei usar glMapBufferRange
, o que usa GL_MAP_UNSYNCHRONIZED_BIT
. Isso deve significar: "não espere e use o VBO como quiser, eu (o programa) o sincronizarei sozinho". Além disso, quando mapeio um intervalo de VBOs e renderizo dados de outra parte, ele não deve estar esperando, mas estou enfrentando os mesmos problemas que tenho glMapBuffer
.
Alguém pode me ajudar a corrigir isso ou explicar por que isso acontece?
fonte