home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 February / Chip_2001-02_cd1.bin / bonus / demos / CS / exp / SOURCES / GLENGINE / material.h < prev    next >
C/C++ Source or Header  |  2000-07-16  |  1KB  |  57 lines

  1. #ifndef __OGL2_MATERIAL__
  2. #define __OGL2_MATERIAL__
  3.  
  4. #include "types.h"
  5. #include "entity.h"
  6.  
  7. extern "C++" {
  8.  
  9. class Material : public Entity {
  10. public:
  11.   virtual ~Material () {}
  12.   virtual void GL (GLenum face) = 0;
  13. };
  14.  
  15. template class EntityList<Material>;
  16. typedef EntityList<Material> Materials;
  17.  
  18. class MaterialGL : public Material
  19. {
  20.   GLfloat ambient[4];
  21.   GLfloat diffuse[4];
  22.   GLfloat specular[4];
  23.   GLfloat emission[4];
  24.   GLfloat shininess; 
  25.  
  26. public:  
  27.   MaterialGL ();
  28.   void Reset ();
  29.  
  30.   void GL (GLenum face);
  31.  
  32.   void Ambient (GLfloat r, GLfloat g, GLfloat b, GLfloat a=1.0F),
  33.        Ambient (GLfloat* v),
  34.        Diffuse (GLfloat r, GLfloat g, GLfloat b, GLfloat a=1.0F),
  35.        Diffuse (GLfloat* v),
  36.        Specular (GLfloat r, GLfloat g, GLfloat b, GLfloat a=1.0F),
  37.        Specular (GLfloat* v),
  38.        Emission (GLfloat r, GLfloat g, GLfloat b, GLfloat a=1.0F),
  39.        Emission (GLfloat* v);
  40.  
  41.   void Shininess (GLfloat f);
  42.  
  43.   // Feedback
  44.   const GLfloat* Ambient ();
  45.   const GLfloat* Diffuse ();
  46.   const GLfloat* Specular ();
  47.   const GLfloat* Emission ();
  48.  
  49.   GLfloat Shininess ();
  50.  
  51. };
  52.  
  53. } // extern "C++"
  54.  
  55. #endif
  56.  
  57.