0
私はOpenGLで地形を持っています。ポイント間のスペースを動的に変更したい しかし、頂点データが頂点バッファオブジェクトに送られるとき、私は何も変更できません。 私が行うことができる唯一のことは、VBOを削除して、各ポイントの新しい位置で置き換えVBOを作成することです。 これを行う最善の方法はありますか?iOS OpenGL ES2は頂点バッファオブジェクトを変更します
私はOpenGLで地形を持っています。ポイント間のスペースを動的に変更したい しかし、頂点データが頂点バッファオブジェクトに送られるとき、私は何も変更できません。 私が行うことができる唯一のことは、VBOを削除して、各ポイントの新しい位置で置き換えVBOを作成することです。 これを行う最善の方法はありますか?iOS OpenGL ES2は頂点バッファオブジェクトを変更します
コメントに記載されているとおり、あなたのように聞こえます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をご覧ください。
バッファ内のデータを変更するには、 'glBufferSubData()'を使用できます。 –