VBO с std :: vector

Я написал загрузчик моделей на C ++ и OpenGL. Я использовал std :: vector для хранения данных вершин, но теперь я хочу передать их в glBufferData () , однако типы данных сильно отличаются. Я хочу знать, есть ли способ преобразовать std :: vector в документированный const GLvoid * для glBufferData () .

Vertex type

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, но я хочу сначала устранить ошибку типа.

36
задан Bojangles 24 August 2011 в 10:01
поделиться