zydgyy
December 6, 2011, 6:36pm
1
Here is my question:
if i want to draw a triangle
...
glBegin(GL_TRIANGLES)
glNormal(...)
glVertex(...)
glVertex(...)
glVertex(...)
glEnd()
...
and now assume i want use index array to draw it,how can i organize the arrays,–normals,verteices!!!dupicate the normals for these three vertices,since all arrays have to same size in OPENGL???
system
December 7, 2011, 12:26am
2
yes, duplicate the normals.
You might also want to make a vertex structure.
THE WIKI has a page
http://www.opengl.org/wiki/Vertex_Arrays
http://www.opengl.org/wiki/FAQ#Multi_indexed_rendering
zydgyy
December 8, 2011, 6:28pm
3
Hi,i read the link you sent,here is a sinnpet code from it, little question:
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
why call it mutilple times,is it neccessary???
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, sizeof(MyVertex), &vertex[0].x);
glEnableClientState(GL_NORMAL_ARRAY);
glNormalPointer(GL_FLOAT, sizeof(MyVertex), &vertex[0].nx);
glClientActiveTexture(GL_TEXTURE0);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, sizeof(MyVertex), &vertex[0].s0);
glClientActiveTexture(GL_TEXTURE1);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, sizeof(MyVertex), &vertex[0].s1);
glClientActiveTexture(GL_TEXTURE2);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, sizeof(MyVertex), &vertex[0].s2);
_arts
December 9, 2011, 2:19am
4
Call it to enable texture coordinate array for each texture unit you need.
If you just use a single texture unit (default is GL_TEXTURE0), then you don’t need to call it several times.