title: OpenGL Vertex Buffer Object code giving bad output
body: <p>My Vertex Buffer Object code is supposed to render textures nicely but instead the textures are being rendered oddly with some triangle shapes.</p>
  
  <p>What happens - <a href="http://godofgod.co.uk/my_files/wrong.png" rel="nofollow noreferrer">http://godofgod.co.uk/my_files/wrong.png</a></p>
  
  <p>What is supposed to happen - <a href="http://godofgod.co.uk/my_files/right.png" rel="nofollow noreferrer">http://godofgod.co.uk/my_files/right.png</a></p>
  
  <p>This function creates the VBO and sets the vertex and texture coordinate data:</p>
  
  <pre><code>extern "C" GLuint create_box_vbo(GLdouble size[2]){
      GLuint vbo;
      glGenBuffers(1,&amp;vbo);
      glBindBuffer(GL_ARRAY_BUFFER, vbo);
      GLsizeiptr data_size = 8*sizeof(GLdouble);
      GLdouble vertices[] = {0,0,  0,size[1],  size[0],0,  size[0],size[1]};
      glBufferData(GL_ARRAY_BUFFER, data_size, vertices, GL_STATIC_DRAW);
      data_size = 8*sizeof(GLint);
      GLint textcoords[] = {0,0,  0,1,  1,0, 1,1};
      glBufferData(GL_ARRAY_BUFFER, data_size, textcoords, GL_STATIC_DRAW);
      return vbo;
  }
  </code></pre>
  
  <p>Here is some relavant code from another function which is supposed to draw the textures with the VBO.</p>
  
  <pre><code>glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE);
  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE);
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();
  glColor4d(1,1,1,a/255);
  glBindTexture(GL_TEXTURE_2D, texture);
  glTranslated(offset[0],offset[1],0);
  glBindBuffer(GL_ARRAY_BUFFER, vbo);
  glVertexPointer(2, GL_DOUBLE, 0, 0);
  glEnableClientState(GL_VERTEX_ARRAY);
  glTexCoordPointer (2, GL_INT, 0, 0);
  glEnableClientState(GL_TEXTURE_COORD_ARRAY);
  glDrawArrays(GL_TRIANGLES, 0, 3);
  glDrawArrays(GL_TRIANGLES, 1, 3);
  glDisableClientState(GL_TEXTURE_COORD_ARRAY);
  glDisableClientState(GL_VERTEX_ARRAY);
  glBindBuffer(GL_ARRAY_BUFFER, 0);
  </code></pre>
  
  <p>I would have hoped for the code to use the first three coordinates (top-left,bottom-left,top-right) and the last three (bottom-left,top-right,bottom-right) to draw the triangles with the texture data correctly in the most efficient way. I don't see why triangles should make it more efficient but apparently that's the way to go. It, of-course, fails for some reason.</p>
  
  <p>I am asking what is broken but also am I going about it in the right way generally?</p>
  
  <p>Thank you.</p>