glbarrettprimitive.h

Go to the documentation of this file.
00001 // ***************************************************************************
00002 //                           glbarrettprimitve.h
00003 //
00004 //    copyright            : (C) 2004 by tbaier
00005 //    email                : tbaier@informatik.uni-hamburg.de
00006 // ***************************************************************************
00007 #ifndef BARRETTPRIMITIVE_H
00008 #define BARRETTPRIMITIVE_H
00009 
00010 #include <GL/gl.h>
00011 #include <GL/glu.h>
00012 #include <GL/glut.h>
00013 #include <stdlib.h>
00014 
00015 #include <Wm3TriMesh.h>
00016 
00024 class GLBarrettPrimitive
00025 {
00026 
00027  public:
00035   typedef struct{
00036     GLfloat ambient[3];     
00037     GLfloat diffuse[3];     
00038     GLfloat specular[3];    
00039     GLfloat emissive[3];    
00040     GLfloat shininess;      
00041     GLfloat alpha;          
00044   } MaterialColorProperties;
00045 
00048   GLBarrettPrimitive(){};
00049 
00052   virtual ~GLBarrettPrimitive(){};
00053 
00058   virtual void draw() = 0;
00059 
00065   void setMaterialColor(MaterialColorProperties *colProp);
00066 
00067   Wm3::TriMesh* triMesh();
00068 
00069   GLuint makeArrowRed(float length = 0.05, float width = 0.00125);
00070   GLuint makeArrow(float length = 0.05, float width = 0.00125);
00071 
00072  protected:
00073   virtual void generateTriMesh() = 0;
00074   Wm3::TriMesh* CollisionTriMesh;
00075 
00076 };
00077 
00078 
00079 
00080 //*********************************//
00081 //**                             **//
00082 //*********************************//
00083 inline void GLBarrettPrimitive::setMaterialColor(MaterialColorProperties *colProp)
00084 {
00085   GLfloat       rgba[4];
00086   int i;
00087   rgba[3] = colProp->alpha;
00088 
00089   for(i = 2; i >= 0; i--){
00090     rgba[i] = colProp->ambient[i];
00091   }
00092   glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, rgba);
00093 
00094   for(i = 2; i >= 0; i--){
00095     rgba[i] = colProp->diffuse[i];
00096   }
00097   glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, rgba);
00098 
00099   for(i = 2; i >= 0; i--){
00100     rgba[i] = colProp->specular[i];
00101   }
00102   glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, rgba);
00103 
00104   for(i = 2; i >= 0; i--){
00105     rgba[i] = colProp->emissive[i];
00106   }
00107   glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, rgba);
00108 
00109   glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, colProp->shininess);
00110 }
00111 
00112 
00113 #endif


tams Tim Baier bhandlib v0.25
Generated Wed Aug 16 14:57:09 2006 by doxygen 1.4.7