2013-06-05 56 views
1

在我的項目中,我想編輯已經在GPU中的給定頂點位置。 我是否需要重新加載整個模型或有一個函數來更改所需的頂點。更改單個頂點值

這是我通過網到GPU

void Mesh3v3n2t::PassToGPU() 
{ 
glGenVertexArrays(1, &VaoId); 
glBindVertexArray(VaoId); 

glGenBuffers(1, &VboId); 
glBindBuffer(GL_ARRAY_BUFFER, VboId); 
glBufferData(GL_ARRAY_BUFFER, 32*vertices.size(),vertices.data(), GL_STATIC_DRAW); 

glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 32, 0); 
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 32, (void*)12); 
glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 32, (void*)24); 

glEnableVertexAttribArray(0); 
glEnableVertexAttribArray(1); 
glEnableVertexAttribArray(2); 

glGenBuffers(1, &IndexBufferId); 
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, IndexBufferId); 
glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices.size()*4, indices.data(), GL_STATIC_DRAW); 
} 

回答

4

您可以使用glBufferSubData。如果您經常這樣做,您可能需要重新考慮GL_STATIC_DRAW使用提示,但這不是必需的