我在頂點緩衝區對象(VBO)中遇到一個奇怪的問題。我創建了一個包含VBO創建和刪除的類。我刪除了類的析構函數中的所有VBO(使用glDeleteBuffers())。OpenGL:VBO刪除的奇怪bahaviour?
現在我創建了2個OpenGL上下文窗口,每個窗口都使用VBO類運行。現在,當我關閉一個GLwindow時,它的析構函數會調用VBO也會被刪除,但奇怪的是第二個窗口上的這個析構函數效果,第二個窗口上運行的對象消失了。當我使用已棄用的glVertex3fv進行渲染時,我可以看到該對象,但不能看到VBO。 如果我不刪除與GLwindow類的析構函數的VBO,一切工作正常。我不應該刪除每個上下文刪除VBO嗎?
我的問題是爲什麼它發生?我知道OpenGL是一個狀態機,但我們不能創建一個完整的新的獨立類對象嗎?我注意到與(glDeleteTextures())相同的效果如果我沒有用析構函數刪除紋理,沒有奇怪的事情發生,但是如果我刪除一個Glwindows紋理,它會對第二個Glwindow生效並且紋理消失。
它是已知問題還是它唯一發生在我身上?
@genpfault有什麼不對?這不是一個正確的問題嗎?奇怪...... – furqan
你可能因爲沒有發佈代碼而得到近距離投票。使用C++封裝OpenGL對象時,人們經常遇到一些神祕的問題。原因幾乎總是由於某種原因,對象被複制/分配,但沒有適當的複製語義。看到我的答案在這裏的一些例子和背景:http://stackoverflow.com/questions/28929452/mesh-class-called-with-default-constructor-not-working-opengl-c/28930189#28930189。 –
非常感謝科拉迪..你的回答我需要。非常感謝.. – furqan