2012-05-09 31 views
4

我可以使用glGenBuffers函數生成多少個緩衝區? 我可以嘗試生成8192(或更多)緩衝區嗎?緩衝區的最大數量

我只渲染一個緩衝區,但我需要存儲很多緩衝區。

int i = 0; 
glGetIntegerv(GL_MAX_DRAW_BUFFERS, &i); 

返回8。這是緩衝區的最大數量,即在同一時間渲染。

對嗎?

+0

類似問題:http://stackoverflow.com/q/10071306/675078 –

回答

2

使用glGenBuffers函數可以生成多少個緩衝區?

glGenBuffers不分配任何存儲它只會獲得緩衝區的名稱/ ID。對此的限制純粹是針對具體實現的,但理論上只有可用內存和管理結構的規模纔是主要的。更多的限制因素是您分配的緩衝區存儲量。

問題當然是:爲什麼你需要這麼多的緩衝區?爲什麼你是像素緩衝區對象,還是顏色緩衝區附件?紋理不能更好地爲您的數據擬合存儲對象嗎?

返回8.這是緩衝區的最大計數,即在相同時間內進行渲染。

是的,這是多個目標渲染中目標緩衝區的最大計數。

5

GL_MAX_DRAW_BUFFERS值與glGenBuffers沒有任何關係,但使用了片段着色器可以寫入的緩衝區(請參閱glDrawBuffers)。

標準中緩衝區的數量沒有限制,您可以根據需要創建任意數量的緩衝區。但是,由於內存限制,所以如果您計劃存儲大量數據,則可能會出現類似glBufferData的呼叫,並且可能會出現故障GL_OUT_OF_MEMORY