• Advertisement

Archived

This topic is now archived and is closed to further replies.

vertex array question

This topic is 5536 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

when i have the arrays containing the vertices, colors and texture coordinates, indices as a global everything works. Now i try to move everything in a class and it doesn''t work anymore. I can''t figure out why. this is the code:
  
void Terrain::Init()
{
  // used to track current entry in the index array

  int index = 0;
  int currentVertex;

  // loop over all vertices in the terrain map

  for (int z = 0; z < MAP_Z; z++)
  {
    for (int x = 0; x < MAP_X; x++)
    {
      // vertices are numbered left to right, top to bottom

      currentVertex = z * MAP_X + x;

      // set the values in the color array

      g_color[currentVertex][0] = g_color[currentVertex][1] =
        g_color[currentVertex][2] = g_terrain[x + MAP_X * z][1]/255.0f;

      // set the values in the texture coordinate array. since the texture

      // is tiled over each "square", we can use texture wrapping

      g_texcoord[currentVertex][0] = (float) x;
      g_texcoord[currentVertex][1] = (float) z;
    }
  }

  for (z = 0; z < MAP_Z - 1; z++)
  {
    for (int x = 0; x < MAP_X; x++)
    {
      currentVertex = z * MAP_X + x;
      g_index[index++] = currentVertex + MAP_X;
      g_index[index++] = currentVertex;
    }
  }

  // enable the vertex arrays being used

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

  // pass the pointers to OpenGL

  glVertexPointer(3, GL_FLOAT, 0, g_terrain);
  glColorPointer(3, GL_FLOAT, 0, g_color);
  glTexCoordPointer(2, GL_FLOAT, 0, g_texcoord);
}

void Terrain::Render()
{
  // loop through all the triangle strips

  for (int z = 0; z < MAP_Z-1; z++)
  {
    // draw the triangles in this strip

    glDrawElements(GL_TRIANGLE_STRIP, MAP_X * 2, GL_UNSIGNED_INT, &g_index[z * MAP_X * 2]);
  }
}
  
Thanks for your help, airo

Share this post


Link to post
Share on other sites
Advertisement
Guest Anonymous Poster
enable the pointers in the render function

Share this post


Link to post
Share on other sites

  • Advertisement