title: Unhandled Exception Error visual studio 2010 C++ (open gl)
body: <p>Im trying to code a 3D model that I am reading in verts from a .obj It was all working with a standard teapot model, so I decided to create a spaceship for the actual assignment. I then changed it with the teapot file and then changed the arrays to be big enough for the vert and vertex normal's etc to fit before before trying to run the program to which i got a unhandled error access violation error. Below is all of the code that the program uses glut library which I have to use..</p>
  
  <p>As a side note I am trying to make it so my camera moves around the spaceship as its origin.</p>
  
  <pre><code>#include &lt;windows.h&gt;
  #include &lt;GL/gl.h&gt;
  #include &lt;GL/glu.h&gt;
  #include "glut.h"
  #include &lt;istream&gt;
  #include &lt;iostream&gt;
  #include &lt;fstream&gt;
  #include &lt;string&gt;
  #include &lt;sstream&gt;
  #include &lt;vector&gt;
  
  
  using namespace std;
  
  struct point3D
  {
      float x;
      float y;
      float z;
  };
  
  struct camera
  {
      point3D pos;
      point3D lookAt;
      point3D up;
  
  };
  
  camera cam = {0, 0, 5, 0, 0, 0, 0, 1, 0};
  
  
  point3D v[162] = {};
  point3D vn[74] = {};
  point3D vt[150] = {};
  point3D f[110][3] = {};
  
  void init()
  {
      glClearColor(0.5, 0.7, 0.0, 1.0);
      glMatrixMode(GL_PROJECTION);
      glLoadIdentity();
      glFrustum(-1.0, 1.0, -1.0, 1.0, 1.0, 500);
  
  }
  
  void display()
  {
      glClear(GL_COLOR_BUFFER_BIT );
      glMatrixMode(GL_MODELVIEW);
      glLoadIdentity(); // reset the matrix
      gluLookAt(cam.pos.x, cam.pos.y, cam.pos.z,
                cam.lookAt.x, cam.lookAt.y, cam.lookAt.z,
                cam.up.x, cam.up.y, cam.up.z);
      glColor3f(1.0, 0.0, 0.0);
      glTranslatef(0.0f, 0.0f, -15.0f);
  
  
      for(int i = 0; i &lt; 110; i++)
      {
          glBegin(GL_TRIANGLES);
          int one = f[i][0].x;
          int two = f[i][1].x;
          int three = f[i][2].x;
  
          glVertex3fv(&amp;(v[one].x));
          glVertex3fv(&amp;(v[two].x));
          glVertex3fv(&amp;(v[three].x));
          glEnd();
      }
  
  
      glFlush();
  }
  
  
  void specialKeyboard(int key, int x, int y)
  {
      switch (key)
      {
          case GLUT_KEY_RIGHT:
              cam.pos.x+=0.2;
              break;
          case GLUT_KEY_LEFT:
              cam.pos.x-=0.2;
              break;
          case GLUT_KEY_UP:
              cam.pos.y+=0.2;
              break;
          case GLUT_KEY_DOWN:
              cam.pos.y-=0.2;
              break;
          case GLUT_KEY_PAGE_UP:
              cam.pos.z+=0.2;
              break;
          case GLUT_KEY_PAGE_DOWN:
              cam.pos.z-=0.2;
              break;
      }
  
      glutPostRedisplay();
  
  }
  
  void normalKeyboard(unsigned char key, int x, int y) {
      switch (key)
      {
  
          case 'w' :
              cam.lookAt.y+=0.5;
              break;
          case 'a' :
              cam.lookAt.y-=0.5;
              break;
          case 's' :
              cam.lookAt.x-=0.5;
              break;
          case 'd' :
              cam.lookAt.x+=0.5;
              break;
      }
  
      glutPostRedisplay();
  
  }
  
  int main(int argc, char* argv[])
  {
      int numVert = 0;
      int numNormals= 0;
      int numcoords = 0;
      int numFaces = 0;
      string test;
      ifstream inputFile;
      inputFile.open("spaceship.obj");
  
      if (!inputFile.good())
          cout &lt;&lt; "Problem with Input File";
      else
      {
          while(inputFile &gt;&gt; test) // FIXED
          {
              inputFile &gt;&gt; test; // SHOULD NOT BE HERE
  
              if (test == "v")
              {
                  inputFile &gt;&gt; v[numVert].x;
                  inputFile &gt;&gt; v[numVert].y;
                  inputFile &gt;&gt; v[numVert].z;
                  numVert++;
              }
              else if(test == "vn")
              {
                  inputFile &gt;&gt; vn[numNormals].x;
                  inputFile &gt;&gt; vn[numNormals].y;
                  inputFile &gt;&gt; vn[numNormals].z;
                  numNormals++;
              }
              else if(test == "vt")
              {
                  inputFile &gt;&gt; vt[numcoords].x;
                  inputFile &gt;&gt; vt[numcoords].y;
                  inputFile &gt;&gt; vt[numcoords].z;
                  numcoords++;
              }
              else if(test == "f")
              {
                  string temp;
  
                  for(int count = 0; count &lt; 3; count++)
                  {
                      inputFile &gt;&gt; temp;
                      stringstream stream(temp);
  
                      getline(stream, temp, '/');
                      f[numFaces][count].x = atof(temp.c_str());
                      getline(stream, temp, '/');
                      f[numFaces][count].y = atof(temp.c_str());
                      getline(stream, temp, '/');
                      f[numFaces][count].z = atof(temp.c_str());
                  }
  
                  numFaces++;
              }
          }
  
          glutInit(&amp;argc, argv);
          glutCreateWindow("rendering a spaceship");
          glutDisplayFunc(display);
          glutSpecialFunc(specialKeyboard);
          glutKeyboardFunc(normalKeyboard);
  
          init();
  
          glutMainLoop();
      }
  }
  </code></pre>
  
  <p>The exact error is as follow "Unhandled exception at 0x779815de in 3dsassignments.exe: 0xC0000005: Access violation reading location 0x40000010."</p>