(я решил попробовать задать этот вопрос по-другому, чтобы возможно продвинуться, как это сделать)
с использованием перечисления 9-4 только в качестве основы в разделе «Рекомендации по работе с данными вершин» Руководства iOS по Apple для OpenGL ES, «Руководство по программированию OpenGL ES для iOS»
Я хочу "добавить" дату позиции в этот буфер. (это можно сделать каким-то образом?)
, а затем просто вызвать какой идентификатор при использовании glDrawElements ...
есть ли способ сделать это? Показан пример того, что я хочу сделать, чтобы дать визуальный.
typedef struct VertexData3D
{
GLfloat position[3];
GLfloat normal[3];
} VertexData3D;
GLuint test1Buffer;
GLuint test2Buffer;
GLuint index1Buffer;
GLuint index2Buffer;
const VertexData3D test1Buffer[] = {...};
const VertexData3D test2Buffer[] = {...};
const GLushort indices1[] = {...};
const GLushort indices2[] = {...};
void CreateBuffers()
{
// Static position data
glGenBuffers(1, &test1Buffer);
glBindBuffer(GL_ARRAY_BUFFER, test1Buffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(test1VertexData), test1VertexData, GL_STATIC_DRAW);
glGenBuffers(1, &test2Buffer);
glBindBuffer(GL_ARRAY_BUFFER, test2Buffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(test2VertexData), test2VertexData, GL_STATIC_DRAW);
// Static index data
glGenBuffers(1, &index1Buffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, index1Buffer);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices1), indices1, GL_STATIC_DRAW);
glGenBuffers(1, &index2Buffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, index2Buffer);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices2), indices2, GL_STATIC_DRAW);
glVertexPointer(3, GL_FLOAT, sizeof(VertexData3D), (void*)0);
glNormalPointer(GL_FLOAT, sizeof(VertexData3D), (void*)12);
}
// sometimes in the model, draw out this test1model.
void DrawModelusingTest1()
{
glBindBuffer(GL_ARRAY_BUFFER, test1VertexData);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, index1Buffer);
glDrawElements(GL_TRIANGLES, theNumberInIndex1, GL_UNSIGNED_SHORT, (void*)0);
}
// sometimes in the model, draw out this test2model.
void DrawModelusingTest2()
{
glBindBuffer(GL_ARRAY_BUFFER, test2VertexData);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, index2Buffer);
glDrawElements(GL_TRIANGLES, theNumberInIndex2, GL_UNSIGNED_SHORT, (void*)0);
}