我正在談論的標誌是GL_STREAM_DRAW,GL_STATIC_DRAW和GL_DYNAMIC_DRAW。 The manual page is clear about when you should use them but ambiguous about what will happen if you do。glBufferData中的提示標誌實際上做了什麼嗎?
現在,在你們大家都回答得太快之前,讓我說明我明白他們應該做什麼,並且可以想象出一些假設可能很重要的假設情景。但我懷疑它在實踐中有很大的不同。最近我一直在想,將旗子設置爲GL_DYNAMIC_DRAW並忘記它會很好,但我腦子裏有一種嘮叨的疑問,即如果我那樣做,我可能會在自己的腳下開槍。
沒有人真的知道更多具體這些事情做什麼?特別是我對STATIC_DRAW和DYNAMIC_DRAW之間的區別最好奇。選錯了一個框架死亡陷阱還是他們只是安慰劑?我想,任何真正的答案將取決於實際的驅動程序實現。或者,如果你能想出一個真實世界的例子,其中這些標誌做什麼(真的有什麼),那麼我會有興趣看到它。
注意:該手冊頁是可悲的過時。而且我不是在談論它只有OpenGL 2.1這一事實。 [手冊頁的維護者已經聲明他們不會修正2.1頁中的任何錯誤。](http://www.khronos.org/bugzilla/show_bug.cgi?id=464#c1)所以你應該避免從使用它們。 –
這是很好的知道,但我不認爲在過去幾年中glBufferData已經發生了很大的變化。我想我會發佈一個鏈接,而不是提供參考pdf的頁碼。你知道手冊頁面的更好來源嗎? – Mikola
我厭倦了維護人員修復錯誤的速度緩慢,因此[我將整個事情上傳到OpenGL Wiki](http://www.opengl.org/wiki/Category:Core_API_Reference),其中錯誤可以被修復,因爲它們被發現,而不是等待。這隻公開*核心* OpenGL API,而不是兼容性。如果你想使用「官方」4.3核心API參考,[在這裏可以找到](http://www.opengl.org/sdk/docs/man4/)。我只是希望如果他們不保持最新狀態,他們會把舊頁面刪除。 –