У мене просте застосування. У нього є дві нитки, кожна з яких має власний контекст візуалізації, але вони поділяють одне VBO (це працює, я тестував його).
Тепер що я хочу: Один потік передає деякі дані з першої половини VBO, а другий потік оновлює другу частину VBO.
Коли я не оновлюю VBO, він працює добре.
Але у мене є деякі дивні проблеми при оновленні. Коли я використовую glMapBuffer
для оновлення VBO (у другому потоці), в першому потоці більшість часу він нічого не робить - весь екран зрозумілий (після glClear
дзвінка). Схоже, він не може торкатися даних VBO (це зрозуміло, оскільки весь буфер відображений і тому його можна якось заблокувати).
Я намагався використовувати glMapBufferRange
, який використовує GL_MAP_UNSYNCHRONIZED_BIT
. Це повинно означати, "не чекайте і використовуйте VBO так, як вам потрібно, я (програма) синхронізую його сам". Крім того, коли я картографую діапазон VBO та надаю дані з іншої частини, він не повинен чекати, але у мене виникають ті самі проблеми, що і з нами glMapBuffer
.
Хтось може допомогти мені виправити це чи пояснити, чому це відбувається?