Hello all,
I’ve been having some problems with the COLLADA format and describing index info from buffers and file.
I have been messing with attrib pointers for a while to no avail, I’m hoping someone can shed some light on this.
One Triangle:
V1 N1 T1 V2 N2 T2 [b] V3 N3 T3
(Same as)
[Vertex,Normal,Texcoord] * 3
(and)
<input offset=“0” semantic=“VERTEX”…
<input offset=“1” semantic=“NORMAL”…
<input offset=“2” semantic=“TEXCOORD” … set=“0”…
How exactly to I specify the above pattern to glDrawElements?
My draw code follows:
glEnableClientState(GL_VERTEX_ARRAY);
// Vertex data
Buffer.Bind(VERTEX);
glVertexPointer(3, GL_FLOAT,0, 0);
// Normal data
Buffer.Bind(NORMAL);
glNormalPointer(GL_FLOAT, 0, 0);
// Texture coordinates
Buffer.Bind(TEXCOORD);
glTexCoordPointer(2, GL_FLOAT, 0, 0);
// Index Data
Buffer.Bind(INDICE);
glDrawElements(GL_TRIANGLES, Buffer.Get_BufferCouple_ByType(INDICE).Count, GL_UNSIGNED_INT, 0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDisableClientState(GL_VERTEX_ARRAY);
code for uploading:
void CVertexBuffer::Buffer_From_Mesh_V(CMesh* Mesh)
{
// for forum reference (not in block)
void Upload(Bind_Type Type,int count,float* Data)
{
GLenum EN = Get_BindENUM(Type);
int i = Get_Buffer_Index_ByType(Type);
Buffers[i].Count = count;
glBindBuffer(EN, Buffers[i].Buffer);
glBufferData(EN, count*sizeof(float), Data,GL_STATIC_DRAW);
glBindBuffer(EN, 0);
}
// gen 4 buffers (can now reference them by type)
Buffer.Generate(new BindCouple(VERTEX,NORMAL,TEXCOORD,INDICE));
Buffer.Upload(VERTEX,Mesh->VERTEX.mCount,Mesh->VERTEX.mData);
Buffer.Upload(NORMAL,Mesh->NORMAL.mCount,Mesh->NORMAL.mData);
Buffer.Upload(TEXCOORD,Mesh->TEXCOORD.mCount,Mesh->TEXCOORD.mData);
Buffer.Upload(INDICE,Mesh->Indicies_count,Mesh->Indicies);
Any help would be much appreciated.