OpenGL - VAO, VBO, IBO, glDrawElements not displaying
===

I am having trouble getting my level data to appear on the screen. I have my shader in use rendering a cube correctly but not the level.

Here is the setup for my VBO, VAO and IBO:

    void ZoneMesh::buildData()
    {
        // Create the VBO for this mesh
        glGenBuffers(1, &vbo);
        glBindBuffer(GL_ARRAY_BUFFER, vbo);
        glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
        
        // Create the IBO
        glGenBuffers(1, &ibo);
    	glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo);
    	glBufferData(GL_ELEMENT_ARRAY_BUFFER, numPoly * 3 * sizeof(short), indices, GL_STATIC_DRAW);
        
        // Create the VAO
        glGenVertexArraysAPPLE(1, &vao);
        glBindVertexArrayAPPLE(vao);
        
        // Bind the VBO to the buffer and set up the attributes
        glBindBuffer(GL_ARRAY_BUFFER, vbo);
        glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), BUFFER_OFFSET(0));
    	glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), BUFFER_OFFSET(sizeof(float)*3));
    	glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), BUFFER_OFFSET(sizeof(float)*5));
        
        //Bind the IBO to the VAO
    	glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo);
    }

Here is my vertex structure:

    struct Vertex
    {
    	float x;
    	float y;
    	float z;
    	float u;
    	float v;
    	float normX;
    	float normY;
    	float normZ;
    };

Here are the relevant data items in the ZoneMesh class:

    Vertex* vertices;
    short* indices;
        
    GLuint vbo;
    GLuint vao;
    GLuint ibo;

Vertex shader:

    #version 120
    
    attribute vec3 position;
    
    uniform mat4 camera;
    
    void main()
    {
        gl_Position = camera * vec4(position, 1.0f);
    }

Fragment shader:

    #version 120
    
    void main(void)
    {
        gl_FragColor = vec4(0.0, 0.6, 0.7, 1.0);
    }

Rendering:

        shader.Use();
        
        // Testing - render the first 50 meshes
        for(int i = 0; i < 50; i++)
        {

            glUniformMatrix4fv(shader("camera"), 1, GL_FALSE, glm::value_ptr(MVPMatrix));
             
            glEnableVertexAttribArray(shader["position"]);
            glBindVertexArrayAPPLE(zone.getVAO(i));
            glDrawElements(GL_LINE, 500, GL_UNSIGNED_SHORT, NULL);
        
        }
        
        shader.UnUse();

The rendering/shader use is not the problem. The MVPMatrix is correct. I have a cube rendering correctly above it. The zone does not render though. I have sunk many hours into this. Maybe a fresh set of eyes can help.