int* Indices = Mesh->Index;
int indexCount = Mesh->Index_count;
int vertexCount = Mesh->Vertex_count;
typedef struct _SvertexData {
float vertex[4];
float normal[3];
float texcoord[2];
} vertexData;
vertexData* Interleaved = new vertexData[vertexCount ];
for(int i=0; i<vertexCount; ++i)
{
Interleaved[i].vertex[0] = Mesh->VERTEX.mData[i*4+0];
Interleaved[i].vertex[1] = Mesh->VERTEX.mData[i*4+1];
Interleaved[i].vertex[2] = Mesh->VERTEX.mData[i*4+2];
Interleaved[i].vertex[3] = Mesh->VERTEX.mData[i*4+3];
Interleaved[i].normal[0] = Mesh->NORMAL.mData[i*3+0];
Interleaved[i].normal[1] = Mesh->NORMAL.mData[i*3+1];
Interleaved[i].normal[2] = Mesh->NORMAL.mData[i*3+2];
Interleaved[i].texcoord[0] = Mesh->TEXCOORD.mData[i*2+0];
Interleaved[i].texcoord[1] = Mesh->TEXCOORD.mData[i*2+1];
}
GLuint Buffer_Interleaved,Buffer_Index;
glGenBuffers(1,&Buffer_Interleaved);
glGenBuffers(1,&Buffer_Index);
glBindBuffer(GL_ARRAY_BUFFER,Buffer_Interleaved);
glBufferData(GL_ARRAY_BUFFER,vertexCount*sizeof(vertexData),Interleaved,GL_STATIC_DRAW);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,Buffer_Index);
glBufferData(GL_ELEMENT_ARRAY_BUFFER,indexCount*sizeof(int),Indices,GL_STATIC_DRAW);
delete [] Interleaved;
glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, sizeof(vertexData), offsetof(vertexData, vertex));
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, sizeof(vertexData), offsetof(vertexData, normal));
glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, sizeof(vertexData), offsetof(vertexData, texcoord));