You can't specify that with indices. Instead you will have to duplicate those vertices which share the same position but have different normals, colors and texture coordinates. Think of it this way: You have an array of vertices, each defined by a position, color, normal and texture coordinates. When you specify the different glXXXPointers you simply tell OpenGL where to look for the position, normal, color and texture coordinates of a single vertex. The pointers you give OpenGL point to the first vertex' attributes. When you then specify your indices later on when invoking glDrawElements the indices map to that vertices array. An index of 0 will take the first position from the pointer you passed to glVertexPointer, the first color from the pointer you passed to glColorPointer and so on. You can not say: use the position at index 0 in the vertex position array and the color from position 3 in the color array for this vertex. Thus the 1:1:1:1 mapping.
On 24 Mrz., 10:11, Perty <pertyj...@gmail.com> wrote: > Hi Robert, thanks for your help. > > Yes, thats makes sense and it's exactly how I do it I think. > > But does the relationship (1 to 1 to 1 to 1, > vertexarray,colorarray,normalarrat, textmaparray) still apply when you > use glDrawElements ? > > For example a when creating a 3D cube, the same vertex could have > three different colors and three different normals depending on the > triangle it belongs to, so the arrays can't have (?) the same one to > one relationship. > > So, the question is how do I map the colors to the indexed vertex? > > /Perty > > On 24 mar, 06:00, Robert Green <rbgrn....@gmail.com> wrote: > > > Vertices, Texture coordinates, Normals and Colors have a 1 to 1 to 1 > > to 1 relationship. That means that for any given vertex, you can > > define: > > > The vertex's location > > The texture coordinate > > The normal > > The color > > > If you define 4 vertices (with or without any of the other attributes, > > doesn't matter), you can draw 2 triangles using drawElements. > > > Let's say that your verts define the following for a 2d square: > > > top left, top right, bottom right, bottom left > > > Easy enough, clockwise rotation. > > > Your indices would look like: 0,1,2, 0,2,3 > > > let's say you put that into a directly-allocated ShortBuffer called > > indexBuffer. > > You'd then just call glDrawElements(GL10.GL_TRIANGLES, 6, > > indexBuffer); > > which says, "draw triangles using 6 points indexed by this index > > buffer" > > > Make sense? > > > On Mar 23, 6:09 pm, Perty <pertyj...@gmail.com> wrote: > > > > Hi, > > > > If I use a glColorPointer together with a glVertexPointer and a > > > glNormalPointer the vertex is all in the same position in the array > > > (taking into accont the stride). > > > > Thats working fine. > > > > But if I want to use the glDrawElement to save some memory > > > (performance?) I do not understand how I should map > > > the normals and the colors. > > > > How does the vertexIndex lookup table relates to the colors and > > > normals? > > > > The glDrawElements is rendering the triangles fine but the normals and > > > colors is all messed up. So I manually traverse the the index and > > > creates a vertexArray now. > > > > It feels like I have just made a simple error. > > > > /Regards Perty -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to email@example.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en To unsubscribe from this group, send email to android-developers+unsubscribegooglegroups.com or reply to this email with the words "REMOVE ME" as the subject.