gputriangle.cpp (1334B)
1 #include "all_includes.hh" 2 3 GPUTriangle::GPUTriangle(Vertex left, Vertex top, Vertex right, unsigned char _r, unsigned char _g, unsigned char _b) 4 : c(left, top, right), r(_r), g(_g), b(_b), vnormal(c.normalizedNormal()) { 5 } 6 7 GPUTriangle::GPUTriangle(Triangle _c, unsigned char _r, unsigned char _g, unsigned char _b) 8 : c(_c), r(_r), g(_g), b(_b), vnormal(c.normalizedNormal()) { 9 } 10 11 void GPUTriangle::display() const { 12 View::setColor(r,g,b); 13 glNormal3d(vnormal.x,vnormal.y,vnormal.z); 14 glVertex3d(c[LEFT].x,c[LEFT].y,c[LEFT].z); 15 glVertex3d(c[TOP].x,c[TOP].y,c[TOP].z); 16 glVertex3d(c[RIGHT].x,c[RIGHT].y,c[RIGHT].z); 17 } 18 19 void GPUTriangle::displayNormal() const { 20 glColor3ub(255,255,0); 21 // Vertex v = (c[0] + c[1] + c[2]) / 3; 22 // glVertex3d(v.x,v.y,v.z); 23 // glVertex3d(v.x+vnormal.x*50,v.y+vnormal.y*50,v.z+vnormal.z*50); 24 25 glColor3ub(255,0,0); 26 Vertex v = (c[LEFT]*8 + c[TOP] + c[RIGHT]) / 10;//(c[0] + c[1] + c[2]) / 3; 27 glVertex3d(v.x,v.y,v.z); 28 glVertex3d(v.x+vnormal.x*50,v.y+vnormal.y*50,v.z+vnormal.z*50); 29 30 glColor3ub(0,255,0); 31 v = (c[LEFT] + c[TOP]*8 + c[RIGHT]) / 10; 32 glVertex3d(v.x,v.y,v.z); 33 glVertex3d(v.x+vnormal.x*50,v.y+vnormal.y*50,v.z+vnormal.z*50); 34 35 glColor3ub(0,0,255); 36 v = (c[LEFT] + c[TOP] + c[RIGHT]*8) / 10; 37 glVertex3d(v.x,v.y,v.z); 38 glVertex3d(v.x+vnormal.x*50,v.y+vnormal.y*50,v.z+vnormal.z*50); 39 }