Код: Выделить всё
if (x+1>=32) {
auto v = createLeftFace(x, y, z, this->chunkData[i].color);
std::vector verticeTemp(v.begin(), v.end());
vertices.insert(vertices.begin()+facesAdded*4, verticeTemp.begin(), verticeTemp.end());
indices.insert(indices.begin()+j, 2+offset);
indices.insert(indices.begin()+j+1, 0+offset);
indices.insert(indices.begin()+j+2, 3+offset);
indices.insert(indices.begin()+j+3, 3+offset);
indices.insert(indices.begin()+j+4, 0+offset);
indices.insert(indices.begin()+j+5, 1+offset);
facesAdded+=1;
j+=36;
offset+=4;
}
x+=1.f;
if(x>=CHUNK_WIDTH) {
x=0.f;
y+=1.f;
}
if(y>=CHUNK_HEIGHT) {
y=0.f;
z+=1.f;
}
}
glBindBuffer(GL_ARRAY_BUFFER, this->VBO);
glBufferSubData(GL_ARRAY_BUFFER, 0, vertices.size()*sizeof(vertice), &vertices.front());
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, this->EBO);
glBufferSubData(GL_ELEMENT_ARRAY_BUFFER, 0, indices.size()*sizeof(uint32_t), &indices.front());
Я попытался установить их с помощью массива, все точки как бы сходятся к началу координат, потому что все они установлены на 0, поэтому они переходят к первой точке в буфере вершин.
Подробнее здесь: https://stackoverflow.com/questions/783 ... -in-opengl
Мобильная версия