Basit bir uygulamam var. Her biri kendi oluşturma bağlamına sahip iki iş parçacığı var, ancak bir VBO'yu paylaşıyorlar (bu çalışıyor, test ettim).
Şimdi ne istiyorum: Bir iş parçacığı VBO ilk yarısından bazı verileri render ve ikinci iş parçacığı VBO ikinci bölümünü güncelleştiriyor.
VBO'yu güncellemediğimde, iyi çalışıyor.
Ancak güncelleme sırasında bazı garip sorunlar yaşıyorum. glMapBuffer
VBO'yu güncellemek için kullandığımda (ikinci iş parçacığında), ilk iş parçacığında, çoğu zaman hiçbir şey yapmaz - tüm ekran açıktır (bir glClear
aramadan sonra ). VBO'dan verilere dokunamıyor gibi görünüyor (bu anlaşılabilir, çünkü tüm tampon eşleştirildi ve böylece bir şekilde kilitlenebilir).
Kullanmaya çalıştım glMapBufferRange
, hangi kullanır GL_MAP_UNSYNCHRONIZED_BIT
. Bu, "beklemeyin ve VBO'yu istediğiniz gibi kullanın, ben (program) kendim senkronize edeceğim" anlamına gelmelidir. Ayrıca, bir dizi VBO'yu eşlediğimde ve başka bir bölümden veri oluşturduğumda, beklememeliyim, ancak aynı sorunları yaşıyorum glMapBuffer
.
Birisi bunu düzeltmeme yardımcı olabilir veya neden olduğunu açıklayabilir mi?