void Octree::GenerateList()
{
extern unsigned list_counter;
int i,j,k;
float *verts,*normals;
list_id = list_counter++;
verts = new float[vTriangle.size()*9];
normals = new float[vTriangle.size()*3];
for(i=0,j=0,k=0;i<vTriangle.size();++i)
{
verts[j++] = vTriangle[i].a.x; verts[j++] = vTriangle[i].a.y; verts[j++] = vTriangle[i].a.z;
verts[j++] = vTriangle[i].b.x; verts[j++] = vTriangle[i].b.y; verts[j++] = vTriangle[i].b.z;
verts[j++] = vTriangle[i].c.x; verts[j++] = vTriangle[i].c.y; verts[j++] = vTriangle[i].c.z;
normals[k++] = vTriangle[i].n.x; normals[k++] = vTriangle[i].n.y; normals[k++] = vTriangle[i].n.z;
}
glNewList(list_id, GL_COMPILE);
glColor3ub(0, 255, 0);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, verts);
glEnableClientState(GL_NORMAL_ARRAY);
glNormalPointer(GL_FLOAT, 0, normals);
glDrawArrays(GL_TRIANGLES, 0, vTriangle.size()*3);
|