Skrevet av Emne: OpenGL: glDrawElements() example code  (Lest 5050 ganger)

ATC

  • Gjest
OpenGL: glDrawElements() example code
« på: 27. ſeptember 2008, 18:24 pm »
  • [applaud]0
  • [smite]0
  • The OpenGL man page for glDrawElements() confused me greatly because it introduces a concept of "indices". Unfortunately, it leaves the reader with no clue as to what exactly is supposed to be indexed, and there is no example code illustrating the relationship between the various tables.



    ATC

    • Gjest
    [Solved] OpenGL: glDrawElements() example code
    « Svar #1 på: 27. ſeptember 2008, 18:24 pm »
  • [applaud]0
  • [smite]0
  • void example_DrawElements()
    {
      GLfloat vertices[] = {
        0,0,0,1,
        0,0,0,1,
        0,0,0,1
      };
      GLfloat colors[] = {
        0,0,0,1,
        0,0,0,1,
        0,0,0,1
      };
      GLfloat texcoords[] = {
        0,0,0,1,
        0,0,0,1,
        0,0,0,1
      };
      GLfloat vertex_normals[] = {
        0,0,0,
        0,0,0,
        0,0,0
      };
      GLushort faces[] = {
        0,1,2
      };
      int triangles = 1;

      glEnableClientState(GL_VERTEX_ARRAY);
      glEnableClientState(GL_COLOR_ARRAY);
      glEnableClientState(GL_TEXTURE_COORD_ARRAY);
      glEnableClientState(GL_NORMAL_ARRAY);

      glVertexPointer(4, GL_FLOAT, 0, vertices);      // x,y,z,w
      glColorPointer(4, GL_FLOAT, 0, colors);         // r,g,b,a
      glTexCoordPointer(4, GL_FLOAT, 0, texcoords);   // t,s,r,q
      glNormalPointer(GL_FLOAT, 0, vertex_normals);   // x,y,z

      glDrawElements(GL_TRIANGLES, triangles * 3, GL_UNSIGNED_SHORT, faces);

    }