2014-02-27 242 views
1

我想用glCopyBufferSubData將數據從一個緩衝區複製到另一個緩衝區。但是我不知道我從中複製的緩衝區的大小。我如何獲得尺寸?獲取緩衝區大小

+0

緩衝區不是由您創建的? –

+0

是的,但我不會將大小存儲在單獨的變量中。 – gartenriese

回答

3

爲此,只需使用適當的枚舉調用glGetBufferParameteriv (...)即可。

在這種情況下,您需要緩衝區對象的大小,因此對於value使用GL_BUFFER_SIZE

您還沒有提到緩衝區對象的作用(例如它當前綁定了什麼),但爲簡單起見,我將假定它是一個頂點緩衝區對象(所以targetGL_ARRAY_BUFFER)。

因此,我們有:

GLint size = 0; 

glBindBuffer   (GL_ARRAY_BUFFER, buffer_obj); 
glGetBufferParameteriv(GL_ARRAY_BUFFER, GL_BUFFER_SIZE, &size); 

您僅限於之前的GL 3.2大小4吉布,雖然我懷疑這真的很重要,你一定會先打一些其他限制。 Neverthless,glGetBufferParameteri64v (...)存在大於4 GiB的緩衝區。

+0

是的,謝謝! – gartenriese