我可以使用glGenBuffers
函數生成多少個緩衝區? 我可以嘗試生成8192(或更多)緩衝區嗎?緩衝區的最大數量
我只渲染一個緩衝區,但我需要存儲很多緩衝區。
int i = 0;
glGetIntegerv(GL_MAX_DRAW_BUFFERS, &i);
返回8
。這是緩衝區的最大數量,即在同一時間渲染。
對嗎?
我可以使用glGenBuffers
函數生成多少個緩衝區? 我可以嘗試生成8192(或更多)緩衝區嗎?緩衝區的最大數量
我只渲染一個緩衝區,但我需要存儲很多緩衝區。
int i = 0;
glGetIntegerv(GL_MAX_DRAW_BUFFERS, &i);
返回8
。這是緩衝區的最大數量,即在同一時間渲染。
對嗎?
使用glGenBuffers函數可以生成多少個緩衝區?
glGenBuffers不分配任何存儲它只會獲得緩衝區的名稱/ ID。對此的限制純粹是針對具體實現的,但理論上只有可用內存和管理結構的規模纔是主要的。更多的限制因素是您分配的緩衝區存儲量。
問題當然是:爲什麼你需要這麼多的緩衝區?爲什麼你是像素緩衝區對象,還是顏色緩衝區附件?紋理不能更好地爲您的數據擬合存儲對象嗎?
返回8.這是緩衝區的最大計數,即在相同時間內進行渲染。
是的,這是多個目標渲染中目標緩衝區的最大計數。
GL_MAX_DRAW_BUFFERS
值與glGenBuffers
沒有任何關係,但使用了片段着色器可以寫入的緩衝區(請參閱glDrawBuffers
)。
標準中緩衝區的數量沒有限制,您可以根據需要創建任意數量的緩衝區。但是,由於內存限制,所以如果您計劃存儲大量數據,則可能會出現類似glBufferData
的呼叫,並且可能會出現故障GL_OUT_OF_MEMORY
類似問題:http://stackoverflow.com/q/10071306/675078 –