1
создать перемежающуюся массив вершин в C++:glNormalPointer буфером чередованием массива
struct vertex
{
GLfloat position[3];
GLbyte normal[3];
};
std::vector<vertex> vertices;
// fill in vertices...
скопировать массив в буфер г л:
GLuint vertsBuffer;
glBindBuffer (GL_ARRAY_BUFFER, vertsBuffer);
glBufferData (GL_ARRAY_BUFFER, vertices.size() * sizeof (vertex), vertices.data(), GL_STATIC_DRAW);
Можно ли использовать glNormalPointer с перемежающимися данными, как это, например?
glBindBuffer (GL_ARRAY_BUFFER, vertsBuffer);
glEnableClientState (GL_NORMAL_ARRAY);
glNormalPointer (GL_BYTE, sizeof (vertex), (GLvoid*) offsetof (vertex, normal));
Или вместо этого нужно использовать glVertexAttribPointer?
Если у вас есть привязка к VBO, он интерпретирует значение указателя как смещение: ** «Если ненулевой именованный буферный объект привязан к цели GL_ARRAY_BUFFER (см. GlBindBuffer), в то время как задан массив вершин, указатель обрабатывается как смещение байта в хранилище данных буфера. Кроме того, привязка объекта буфера (GL_ARRAY_BUFFER_BINDING) сохраняется как состояние вершины arrayclient-side (GL_VERTEX_ARRAY_BUFFER_BINDING). "** – genpfault
Это второй абзац блока ** Описание ** по путь. – genpfault
Да, я думаю, я должен удалить этот вопрос. Прости! – atb