void AdjustVertexData(float fXOffset, float fYOffset) { std::vector<float> fNewData(ARRAY_COUNT(vertex_data)); memcpy(&fNewData[0], vertex_data, sizeof(vertex_data)); for(int iVertex = 0; iVertex < ARRAY_COUNT(vertex_data); iVertex += 4) { fNewData[iVertex] += fXOffset; fNewData[iVertex + 1] += fYOffset; } glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer_object); glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(vertex_data), &fNewData[0]); glDrawArrays(GL_TRIANGLES, 0, 3); glBindBuffer(GL_ARRAY_BUFFER, 0); }
void AdjustVertexData(float fXOffset, float fYOffset) { std::vector<float> fNewData(ARRAY_COUNT(vertexPositions)); memcpy(&fNewData[0], vertexPositions, sizeof(vertexPositions)); // Update x and y vertex coordinates, but skip z and w coordinates. for(int iVertex = 0; iVertex < ARRAY_COUNT(vertexPositions); iVertex += 4) { fNewData[iVertex] += fXOffset; fNewData[iVertex + 1] += fYOffset; } glBindBuffer(GL_ARRAY_BUFFER, positionBufferObject); glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(vertexPositions), &fNewData[0]); glBindBuffer(GL_ARRAY_BUFFER, 0); }
void AdjustVertexData(float x, float z) { std::vector<float> fNewData(ARRAY_COUNT(vertices)); memcpy(&fNewData[0], vertices, sizeof(vertices)); for(int i = 24; i < 48; i += 3) { fNewData[i] += x; fNewData[i + 2] += z; } glBindBuffer(GL_ARRAY_BUFFER, vbo); glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(vertices), &fNewData[0]); glBindBuffer(GL_ARRAY_BUFFER, 0); }