1:#include <GL/glut.h>
   2:#include <stdio.h>
   3:#include "material.h"
   4:
   5:
   6:void iniciaMaterial(void)
   7:{
   8:        /* Se modificara las propiedades de color de material ambiente y difusa */
   9:        glColorMaterial(GL_FRONT,GL_AMBIENT_AND_DIFFUSE);
  10:
  11:        /* Se permite el cambio de la propiedad de material con glColor */
  12:        glEnable(GL_COLOR_MATERIAL);
  13:}
  14:
  15:
  16:/*************************** DEFINICIìN DE LOS MATERIALES *********************************/
  17:
  18:void oro (void) {
  19:        float oro_ambiente[] = {0.57f, 0.40f, 0.00f};
  20:        float oro_difusa[] = {0.22f, 0.15f, 0.0f};
  21:        float oro_especular[] = {0.71f, 0.70f, 0.56f};
  22:        float oro_exponente_brillo = 16.0f;
  23:        
  24:        glMaterialfv(GL_FRONT, GL_AMBIENT, oro_ambiente);
  25:        glMaterialfv(GL_FRONT, GL_DIFFUSE, oro_difusa);
  26:        glMaterialfv(GL_FRONT, GL_SPECULAR, oro_especular);
  27:        glMaterialf(GL_FRONT, GL_SHININESS, oro_exponente_brillo);
  28:}
  29:
  30:void aluminio (void) {
  31:        float aluminio_ambiente[] = {0.30f, 0.30f, 0.35f};
  32:        float aluminio_difusa[] = {0.30f, 0.30f, 0.50f};
  33:        float aluminio_especular[] = {0.70f, 0.70f, 0.80f};
  34:        float aluminio_exponente_brillo = 9.0f;
  35:        
  36:        glMaterialfv(GL_FRONT, GL_AMBIENT, aluminio_ambiente);
  37:        glMaterialfv(GL_FRONT, GL_DIFFUSE, aluminio_difusa);
  38:        glMaterialfv(GL_FRONT, GL_SPECULAR, aluminio_especular);
  39:        glMaterialf(GL_FRONT, GL_SHININESS, aluminio_exponente_brillo);
  40:}
  41:
  42:void cobre (void) {
  43:        float cobre_ambiente[] = {0.33f, 0.26f, 0.23f};
  44:        float cobre_difusa[] = {0.50f, 0.11f, 0.00f};
  45:        float cobre_especular[] = {0.95f, 0.73f, 0.00f};
  46:        float cobre_exponente_brillo = 93.0f;
  47:        
  48:        glMaterialfv(GL_FRONT, GL_AMBIENT, cobre_ambiente);
  49:        glMaterialfv(GL_FRONT, GL_DIFFUSE, cobre_difusa);
  50:        glMaterialfv(GL_FRONT, GL_SPECULAR, cobre_especular);
  51:        glMaterialf(GL_FRONT, GL_SHININESS, cobre_exponente_brillo);
  52:}
  53:
  54:void purpura (void) {
  55:        float purpura_ambiente[] = {0.25f, 0.17f, 0.19f};
  56:        float purpura_difusa[] = {0.10f, 0.03f, 0.22f};
  57:        float purpura_especular[] = {0.64f, 0.00f, 0.98f};
  58:        float purpura_exponente_brillo = 8.0f;
  59:        
  60:        glMaterialfv(GL_FRONT, GL_AMBIENT, purpura_ambiente);
  61:        glMaterialfv(GL_FRONT, GL_DIFFUSE, purpura_difusa);
  62:        glMaterialfv(GL_FRONT, GL_SPECULAR, purpura_especular);
  63:        glMaterialf(GL_FRONT, GL_SHININESS, purpura_exponente_brillo);
  64:}
  65:
  66:void rojo (void) {
  67:        float rojo_ambiente[] = {0.25f, 0.15f, 0.15f};
  68:        float rojo_difusa[] = {0.27f, 0.00f, 0.00f};
  69:        float rojo_especular[] = {0.61f, 0.13f, 0.18f};
  70:        float rojo_exponente_brillo = 12.0f;
  71:        
  72:        glMaterialfv(GL_FRONT, GL_AMBIENT, rojo_ambiente);
  73:        glMaterialfv(GL_FRONT, GL_DIFFUSE, rojo_difusa);
  74:        glMaterialfv(GL_FRONT, GL_SPECULAR, rojo_especular);
  75:        glMaterialf(GL_FRONT, GL_SHININESS, rojo_exponente_brillo);
  76:}
  77:
  78:void rojo2 (void) {
  79:        float rojo_ambiente[] = {0.55f, 0.15f, 0.15f};
  80:        float rojo_difusa[] = {0.57f, 0.00f, 0.00f};
  81:        float rojo_especular[] = {0.61f, 0.13f, 0.18f};
  82:        float rojo_exponente_brillo = 12.0f;
  83:        
  84:        glMaterialfv(GL_FRONT, GL_AMBIENT, rojo_ambiente);
  85:        glMaterialfv(GL_FRONT, GL_DIFFUSE, rojo_difusa);
  86:        glMaterialfv(GL_FRONT, GL_SPECULAR, rojo_especular);
  87:        glMaterialf(GL_FRONT, GL_SHININESS, rojo_exponente_brillo);
  88:}
  89:
  90:void azul (void) {
  91:        float azul_ambiente[] = {0.10f, 0.11f, 0.79f};
  92:        float azul_difusa[] = {0.30f, 0.30f, 0.71f};
  93:        float azul_especular[] = {0.83f, 0.83f, 0.83f};
  94:        float azul_exponente_brillo = 12.0f;
  95:        
  96:        glMaterialfv(GL_FRONT, GL_AMBIENT, azul_ambiente);
  97:        glMaterialfv(GL_FRONT, GL_DIFFUSE, azul_difusa);
  98:        glMaterialfv(GL_FRONT, GL_SPECULAR, azul_especular);
  99:        glMaterialf(GL_FRONT, GL_SHININESS, azul_exponente_brillo);
 100:}
 101:
 102:void blanco(void) {
 103:        float blanco_ambiente[] = {1.0f, 1.0f, 1.0};
 104:        float blanco_difusa[] = {1.0f, 1.0f, 1.0f};
 105:        float blanco_especular[] = {1.0f, 1.0f, 1.0f};
 106:        float blanco_exponente_brillo = 1.0f;
 107:        
 108:        glMaterialfv(GL_FRONT, GL_AMBIENT, blanco_ambiente);
 109:        glMaterialfv(GL_FRONT, GL_DIFFUSE, blanco_difusa);
 110:        glMaterialfv(GL_FRONT, GL_SPECULAR, blanco_especular);
 111:        glMaterialf(GL_FRONT, GL_SHININESS, blanco_exponente_brillo);
 112:}
 113:
 114:void verde(void) {
 115:        float verde_ambiente[] = {0.1f, 0.1f, 0.1f};
 116:        float verde_difusa[] = {0.0f, 0.7f, 0.0f};
 117:        float verde_especular[] = {0.8f, 0.8f, 0.8f};
 118:        float verde_exponente_brillo = 93.0f;
 119:        
 120:        glMaterialfv(GL_FRONT, GL_AMBIENT, verde_ambiente);
 121:        glMaterialfv(GL_FRONT, GL_DIFFUSE, verde_difusa);
 122:        glMaterialfv(GL_FRONT, GL_SPECULAR, verde_especular);
 123:        glMaterialf(GL_FRONT, GL_SHININESS, verde_exponente_brillo);
 124:}
 125:
 126:void amarillo(void) {
 127:        float amarillo_ambiente[] = {0.81f, 0.81f, 0.0f};
 128:        float amarillo_difusa[] = {0.70f, 0.70f, 0.0f};
 129:        float amarillo_especular[] = {0.60f, 0.60f, 0.8f};
 130:        float amarillo_exponente_brillo = 3.0f;
 131:        
 132:        glMaterialfv(GL_FRONT, GL_AMBIENT, amarillo_ambiente);
 133:        glMaterialfv(GL_FRONT, GL_DIFFUSE, amarillo_difusa);
 134:        glMaterialfv(GL_FRONT, GL_SPECULAR, amarillo_especular);
 135:        glMaterialf(GL_FRONT, GL_SHININESS, amarillo_exponente_brillo);
 136:}
 137:
 138:void negro(void) {
 139:        float negro_ambiente[] = {0.10f, 0.10f, 0.10f};
 140:        float negro_difusa[] = {0.10f, 0.10f, 0.10f};
 141:        float negro_especular[] = {0.10f, 0.10f, 0.10f};
 142:        float negro_exponente_brillo = 48.0f;
 143:        
 144:        glMaterialfv(GL_FRONT, GL_AMBIENT, negro_ambiente);
 145:        glMaterialfv(GL_FRONT, GL_DIFFUSE, negro_difusa);
 146:        glMaterialfv(GL_FRONT, GL_SPECULAR, negro_especular);
 147:        glMaterialf(GL_FRONT, GL_SHININESS, negro_exponente_brillo);
 148:}
 149:
 150:void cielo(void) {
 151:        float cielo_ambiente[] = {0.10f, 0.60f, 1.0f};
 152:        float cielo_difusa[] = {0.10f, 0.60f, 1.0f};
 153:        float cielo_especular[] = {0.10f, 0.60f, 1.0f};
 154:        float cielo_exponente_brillo = 20.0f;
 155:        
 156:        glMaterialfv(GL_FRONT, GL_AMBIENT, cielo_ambiente);
 157:        glMaterialfv(GL_FRONT, GL_DIFFUSE, cielo_difusa);
 158:        glMaterialfv(GL_FRONT, GL_SPECULAR, cielo_especular);
 159:        glMaterialf(GL_FRONT, GL_SHININESS, cielo_exponente_brillo);
 160:}