2016-04-16 9 views
0

私はOpenGLで地形を持っています。ポイント間のスペースを動的に変更したい しかし、頂点データが頂点バッファオブジェクトに送られるとき、私は何も変更できません。 私が行うことができる唯一のことは、VBOを削除して、各ポイントの新しい位置で置き換えVBOを作成することです。 これを行う最善の方法はありますか?iOS OpenGL ES2は頂点バッファオブジェクトを変更します

+0

バッファ内のデータを変更するには、 'glBufferSubData()'を使用できます。 –

答えて

0

コメントに記載されているとおり、あなたのように聞こえますglBufferSubData

あなたは、多くの場合、データを変更することを計画している場合、最初のセットアップお使いのVBOの初期状態:

float[] positions = { 0, 0, 0, 0, 0, 0 }; 
int numberOfPositions = 6; 
int vbo = glGenBuffers(); 
glBindBuffer(GL_ARRAY_BUFFER, vbo); 
glBufferData(GL_ARRAY_BUFFER, sizeof(float) * numberOfPositions, positions, GL_DYNAMIC_DRAW); 

その後、後であなたがこれを行うだろう、あなたは1に最後の2つの値を変更したいと言う:

float[] update = { 1, 1 }; 
int offset = 4 
glBindBuffer(GL_ARRAY_BUFFER, vbo); 
glBufferSubData(GL_ARRAY_BUFFER, sizeof(float) * offset, update); 

詳細についてはdocs.gl page on glBufferSubDataをご覧ください。

関連する問題