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

  1. #include "material.h"
  2. #include "macros.h"
  3.  
  4. MaterialGL::MaterialGL() {
  5.   Reset();
  6. }
  7.  
  8. void MaterialGL::Reset()
  9. {
  10.   ambient[0] = ambient[1] = ambient[2] = 0.2F; ambient[3] = 1.0F;
  11.   diffuse[0] = diffuse[1] = diffuse[2] = 0.8F; diffuse[3] = 1.0F;
  12.   specular[0] = specular[1] = specular[2] = 0.0F; specular[3] = 1.0F;
  13.   emission[0] = emission[1] = emission[2] = 0.0F; emission[3] = 1.0F;
  14.   shininess = 0.0F;
  15. }
  16.  
  17. void MaterialGL::GL (GLenum face)
  18. {
  19.   glMaterialfv(face, GL_AMBIENT, ambient);
  20.   glMaterialfv(face, GL_DIFFUSE, diffuse);
  21.   glMaterialfv(face, GL_SPECULAR, specular);
  22.   glMaterialfv(face, GL_EMISSION, emission);
  23.   glMaterialf(face, GL_SHININESS, shininess);
  24. }
  25.  
  26. void MaterialGL::Ambient (GLfloat r, GLfloat g, GLfloat b, GLfloat a=1.0F) {
  27.   SetVector4(ambient, r, g, b, a);
  28. }
  29. void MaterialGL::Diffuse (GLfloat r, GLfloat g, GLfloat b, GLfloat a=1.0F) {
  30.   SetVector4(diffuse, r, g, b, a);
  31. }
  32. void MaterialGL::Specular (GLfloat r, GLfloat g, GLfloat b, GLfloat a=1.0F) {
  33.   SetVector4(specular, r, g, b, a);
  34. }
  35. void MaterialGL::Emission (GLfloat r, GLfloat g, GLfloat b, GLfloat a=1.0F) {
  36.   SetVector4(emission, r, g, b, a);
  37. }
  38. void MaterialGL::Ambient (GLfloat* v) {
  39.   SetVector4(ambient, *v, *(v+1), *(v+2), *(v+3));
  40. }
  41. void MaterialGL::Diffuse (GLfloat* v) {
  42.   SetVector4(diffuse, *v, *(v+1), *(v+2), *(v+3));
  43. }
  44. void MaterialGL::Specular (GLfloat* v) {
  45.   SetVector4(specular, *v, *(v+1), *(v+2), *(v+3));
  46. }
  47. void MaterialGL::Emission (GLfloat* v) {
  48.   SetVector4(emission, *v, *(v+1), *(v+2), *(v+3));
  49. }
  50. void MaterialGL::Shininess (GLfloat f) {
  51.   shininess = f;
  52. }
  53.  
  54. const GLfloat* MaterialGL::Ambient () {
  55.   return ambient;
  56. }
  57. const GLfloat* MaterialGL::Diffuse () {
  58.   return diffuse;
  59. }
  60. const GLfloat* MaterialGL::Specular () {
  61.   return specular;
  62. }
  63. const GLfloat* MaterialGL::Emission () {
  64.   return emission;
  65. }
  66. GLfloat MaterialGL::Shininess () {
  67.   return shininess;
  68. }
  69.