考慮下面的情況的OpenGL調用之後突變下的基準數據
glDeleteBuffers(1, &buffer);
// buffer = 0;
...
if(buffer == 0) {
// Should not pass but does.
}
當然當執行glDeleteBuffers,緩衝器被設置爲0
,但考慮發出DELETE,它實際上正在執行之間的延遲,我可能會遇到非零值。
上面的條件保持隨機傳遞,這是不希望的。
我的問題是,我可以分配零緩衝沒有影響排隊命令?我明白,在傳遞價值時,沒有什麼不好的事情會發生,但我在文檔中沒有發現如何處理引用。 OpenGL是否將數據從引用複製到一些不可變的臨時緩衝區,然後才被「消耗」?
試圖指定-1希望它會產生一個錯誤,但由於問題的隨機行爲,我真的不想依靠「沒有發生,不會發生」。
爲什麼你認爲'glDeleteBuffers'改變緩衝區的值?第二個參數是'const GLuint *',這意味着它不能被該函數修改。 – BDL
現在這很奇怪,因爲條件並不總是通過。 –
未定義的行爲,因爲您在告知GL刪除它之後正在使用'buffer'。 – lfgtm