2013-06-19 63 views
0

我有一個緩衝區,我想填補連續變換反饋,我想知道如何完全做到這一點。glBindBufferRange與變換反饋的使用

glBindBufferRange有五個參數,據我瞭解,前三個是相當於glBindBufferBase的參數,但我對offsetsize參數的幾個問題。

如果我的第一反饋產生n元,從GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN檢索,我的原語點,我想從那個位置繼續在緩衝區中,應補償的glBindBufferRange設置爲n*4*sizeof(GLfloat)變換? (假設我檢索vec4幾何着色器輸出)

的文檔只是說,offsetsize應該是基本的機臺(雖然他們有兩種不同類型,GLintptr和GLsizeiptr),但我不完全相信這意味着,所以我假設字節,這是正確的?

回答

1

是的,在變換反饋期間寫入緩衝區的數據量是寫入的基元數量*這些基元的組件數量*基元的大小。是的,「基本機器單位」是「字節」的標準。

+0

對不起,它有點不清楚。這些是完全獨立的變換反饋。我真的想知道如何計算從哪裏開始寫入第二個反饋的緩衝區,即使用的偏移量,所以我不會在緩衝區中留下空隙或覆蓋已寫入的內容。 – leohutson

+1

@leohutson:看到我的最後一句話。 –

+0

非常感謝您的幫助,我認爲我現在明白了。如果你不介意,我想問一個稍微切題的問題。在我當前的代碼中,在我的初始轉換反饋之後,我有一個while循環作爲屏障,只是暫停程序,直到GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN查詢可用。如果我要擺脫這種情況,只是自己計算預期的基元數量,綁定重新綁定緩衝區並在之後立即執行第二個反饋,還是存在併發問題是否安全? – leohutson