Saya punya aplikasi sederhana. Ini memiliki dua utas, masing-masing dengan konteks render sendiri, tetapi mereka berbagi satu VBO (ini berfungsi, saya mengujinya).
Sekarang yang saya inginkan: Satu utas membuat beberapa data dari paruh pertama VBO dan utas kedua memperbarui bagian kedua VBO.
Ketika saya tidak memperbarui VBO, itu berfungsi dengan baik.
Tapi saya punya beberapa masalah aneh saat memperbarui. Ketika saya gunakan glMapBuffer
untuk memperbarui VBO (di utas kedua), di utas pertama, sebagian besar waktu, itu membuat apa-apa - seluruh layar jelas (setelah glClear
panggilan). Sepertinya tidak bisa menyentuh data dari VBO (ini bisa dimengerti, karena seluruh buffer dipetakan dan entah bagaimana bisa dikunci).
Saya mencoba menggunakan glMapBufferRange
, yang menggunakan GL_MAP_UNSYNCHRONIZED_BIT
. Ini harus berarti, "jangan menunggu dan menggunakan VBO seperti yang Anda inginkan, saya (program) akan menyinkronkannya sendiri". Juga, ketika saya memetakan berbagai VBO dan membuat data dari bagian lain, itu seharusnya tidak menunggu, tapi saya mengalami masalah yang sama dengan saya glMapBuffer
.
Adakah yang bisa membantu saya memperbaiki ini atau menjelaskan mengapa itu terjadi?