Я написал загрузчик моделей на C ++ и OpenGL.Я использовал std::vector
s для хранения моих данных вершин, но теперь я хочу передать их в glBufferData()
, однако типы данных сильно отличаются.Я хочу знать, есть ли способ конвертировать между std::vector
в документированный const GLvoid *
для glBufferData()
.
Тип вершины
typedef struct
{
float x, y, z;
float nx, ny, nz;
float u, v;
}
Vertex;
vector<Vertex> vertices;
glBufferData (), вызов
glBufferData(GL_ARRAY_BUFFER, vertices.size() * 3 * sizeof(float), vertices, GL_STATIC_DRAW);
Я получаю следующую (ожидаемую) ошибку:
error: cannot convert ‘std::vector<Vertex>’ to ‘const GLvoid*’ in argument passing
Как преобразовать вектор в тип, совместимый с glBufferData()
?
NB.Я не забочусь о правильном распределении памяти в данный момент;vertices.size() * 3 * sizeof(float)
скорее всего будет segfault, но сначала я хочу решить ошибку типа.