Blob Blame Raw

#include <GL/gl.h>

#include "model.h"


void Model::normalize() {
    for(TriangleList::iterator i = triangles.begin(); i != triangles.end(); ++i)
        i->normalize();
}

void Model::transform(const Matrix4 &matrix) {
    for(TriangleList::iterator i = triangles.begin(); i != triangles.end(); ++i)
        for(int j = 0; j < 3; ++j)
            i->vertices[j] = matrix.transform( i->vertices[j] );
    normalize();
}

void Model::draw() const {
    glEnable(GL_LIGHTING);
    
    glColor4dv(color.c);
    glBegin(GL_TRIANGLES);
    for(TriangleList::const_iterator i = triangles.begin(); i != triangles.end(); ++i) {
        glNormal3dv(i->normal.c);
        glVertex3dv(i->vertices[0].c);
        glVertex3dv(i->vertices[1].c);
        glVertex3dv(i->vertices[2].c);
    }
    glEnd();

    glDisable(GL_LIGHTING);
}