1:#include <GL/glut.h>
   2:#include "luces.h"
   3:
   4:/******************************************************************************************/
   5:/* Inicia los parametros de iluminacion de OpenGL                                         */
   6:/* Parametros --> Ninguno                                                                 */
   7:/* Salida ------> Ninguna                                                                 */
   8:/******************************************************************************************/
   9:void iniciaIluminacion(void) {  
  10:        GLfloat lmodel_ambient [] = {0.4f, 0.4f, 0.4f, 1.0f};
  11:
  12:        /* Parámetros del modelo de iluminación */
  13:        glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
  14:
  15:        /* Activa la iluminación de la escena */
  16:        glEnable(GL_LIGHTING);  
  17:        glEnable(GL_NORMALIZE);
  18:
  19:}
  20:
  21:/*************************** DEFINICIìN DE LAS LUCES **************************************/
  22:
  23:/******************************************************************************************/
  24:/* Define y activa la luz 0                                                               */
  25:/* Parametros --> Ninguno                                                                 */
  26:/* Salida ------> Ninguna                                                                 */
  27:/******************************************************************************************/
  28:void luz0 (void) {
  29:        float luz0_posicion[] = {0.0f, 0.0f, 1.0f, 0.0f};
  30:        float luz0_ambiente[] = {0.2f, 0.2f, 0.2f, 1.0f};
  31:        float luz0_difusa[] = {0.5f, 0.5f, 0.5f, 1.0f};
  32:        float luz0_especular[] = {0.6f, 0.6f, 0.6f, 1.0f};
  33:
  34:        glLightfv (GL_LIGHT0, GL_POSITION, luz0_posicion);
  35:        glLightfv (GL_LIGHT0, GL_AMBIENT, luz0_ambiente);
  36:        glLightfv (GL_LIGHT0, GL_DIFFUSE, luz0_difusa);
  37:        glLightfv (GL_LIGHT0, GL_SPECULAR, luz0_especular);
  38:        glEnable(GL_LIGHT0);
  39:}
  40:
  41:void luz1 (void)
  42:{
  43:        float luz1_posicion[] = {1.0f, 0.0f, 0.0f, 0.0f};
  44:        float luz1_ambiente[] = {0.02f, 0.02f, 0.02f, 1.0f};
  45:        float luz1_difusa[] = {0.5f, 0.5f, 0.5f, 1.0f};
  46:        float luz1_especular[] = {0.6f, 0.6f, 0.6f, 1.0f};
  47:        float luz1_direccion[] =  {-1.0f,0.0f,0.0f};
  48:
  49:        glLightfv (GL_LIGHT1, GL_POSITION, luz1_posicion);
  50:        glLightfv (GL_LIGHT1, GL_AMBIENT, luz1_ambiente);
  51:        glLightfv (GL_LIGHT1, GL_DIFFUSE, luz1_difusa);
  52:        glLightfv (GL_LIGHT1, GL_SPECULAR, luz1_especular);
  53:        glLightfv (GL_LIGHT1, GL_SPOT_DIRECTION, luz1_direccion);
  54:        glEnable(GL_LIGHT1);
  55:}
  56:
  57:void luz2 (void)
  58:{
  59:
  60:        float luz2_posicion[] = {-1.0f, 0.0f, 0.0f, 0.0f};
  61:        float luz2_ambiente[] = {0.02f, 0.02f, 0.02f, 1.0f};
  62:        float luz2_difusa[] = {0.5f, 0.5f, 0.5f, 1.0f};
  63:        float luz2_especular[] = {0.6f, 0.6f, 0.6f, 1.0f};
  64:        float luz2_direccion[] =  {1.0f,0.0f,0.0f};
  65:
  66:        glLightfv (GL_LIGHT2, GL_POSITION, luz2_posicion);
  67:        glLightfv (GL_LIGHT2, GL_AMBIENT, luz2_ambiente);
  68:        glLightfv (GL_LIGHT2, GL_DIFFUSE, luz2_difusa);
  69:        glLightfv (GL_LIGHT2, GL_SPECULAR, luz2_especular);
  70:        glLightfv (GL_LIGHT2, GL_SPOT_DIRECTION, luz2_direccion);
  71:        glEnable(GL_LIGHT2);
  72:}
  73:
  74:void luz3 (void)
  75:
  76:{
  77:        float luz3_posicion[] = {0.0f, 0.0f, -1.0f, 0.0f};
  78:        float luz3_ambiente[] = {0.02f, 0.02f, 0.02f, 1.0f};
  79:        float luz3_difusa[] = {0.5f, 0.5f, 0.5f, 1.0f};
  80:        float luz3_especular[] = {0.6f, 0.6f, 0.6f, 1.0f};
  81:        float luz3_direccion[] =  {0.0f,0.0f,1.0f};
  82:
  83:        glLightfv (GL_LIGHT3, GL_POSITION, luz3_posicion);
  84:        glLightfv (GL_LIGHT3, GL_AMBIENT, luz3_ambiente);
  85:        glLightfv (GL_LIGHT3, GL_DIFFUSE, luz3_difusa);
  86:        glLightfv (GL_LIGHT3, GL_SPECULAR, luz3_especular);
  87:        glLightfv (GL_LIGHT3, GL_SPOT_DIRECTION, luz3_direccion);
  88:        glEnable(GL_LIGHT3);
  89:}
  90:
  91:void niebla (void)
  92:{
  93:        float color_niebla[]={0.15f,0.15f,0.15f};
  94:
  95:        glFogf(GL_FOG_MODE,GL_EXP);
  96:        glFogf(GL_FOG_DENSITY,0.075);
  97:        glFogf(GL_FOG_START,1.0);
  98:        glFogf(GL_FOG_END,400.0);
  99:
 100:        glFogfv (GL_FOG_COLOR,color_niebla);
 101:        glEnable (GL_FOG);
 102:}