比方說,我有頂點數組和VBO指針:OpenGL:緩衝到VBO後仍然需要一個頂點數組嗎?
std::vector<Vertex> vertices;
GLuint vbo;
glBindBuffer(GL_ARRAY_BUFFER, vbo);
現在我緩存數據:
glBufferData(
GL_ARRAY_BUFFER,
vertices.size()*sizeof(Vertex),
&vertices[0],
GL_STATIC_DRAW
);
如果我理解這個正確我仍然需要保持頂點數組因GL_STATIC_DRAW
。但是,如果我將其更改爲GL_STATIC_COPY
,則所有數據都將被複制到GPU的內存中,這樣我就可以釋放由vertices
使用的內存。那是對的嗎?如果是這種情況,爲什麼我們需要*_DRAW
?這是有用的,因爲GPU的內存限制?再加上GL_STATIC_READ
真的有效嗎?