home *** CD-ROM | disk | FTP | other *** search
/ 3D Games (Spidla) / 3dhry1.iso / carterrain / src / skybox.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2003-03-17  |  3.0 KB  |  145 lines

  1. #define dDOUBLE
  2.  
  3. #include <allegro.h>
  4. #include <alleggl.h>
  5.  
  6. #include "skybox.h"
  7.  
  8. void CSkybox::init(char *file0, char *file1, char *file2, char *file3, char *file4, char *file5)
  9. {
  10.     BITMAP *bmp;
  11.     
  12.     bmp = load_bmp(file0, NULL);
  13.     if(bmp==NULL)
  14.     {
  15.         allegro_message("Can't find %s", file0);
  16.         exit(-1);
  17.     }
  18.     tex[0]=allegro_gl_make_texture(bmp);
  19.     destroy_bitmap(bmp);
  20.     bmp = load_bmp(file1, NULL);
  21.     if(bmp==NULL)
  22.     {
  23.         allegro_message("Can't find %s", file1);
  24.         exit(-1);
  25.     }
  26.     tex[1]=allegro_gl_make_texture(bmp);
  27.     destroy_bitmap(bmp);
  28.     bmp = load_bmp(file2, NULL);
  29.     if(bmp==NULL)
  30.     {
  31.         allegro_message("Can't find %s", file2);
  32.         exit(-1);
  33.     }
  34.     tex[2]=allegro_gl_make_texture(bmp);
  35.     destroy_bitmap(bmp);
  36.     bmp = load_bmp(file3, NULL);
  37.     if(bmp==NULL)
  38.     {
  39.         allegro_message("Can't find %s", file3);
  40.         exit(-1);
  41.     }
  42.     tex[3]=allegro_gl_make_texture(bmp);
  43.     destroy_bitmap(bmp);
  44.     bmp = load_bmp(file4, NULL);
  45.     if(bmp==NULL)
  46.     {
  47.         allegro_message("Can't find %s", file4);
  48.         exit(-1);
  49.     }
  50.     tex[4]=allegro_gl_make_texture(bmp);
  51.     destroy_bitmap(bmp);
  52.     bmp = load_bmp(file5, NULL);
  53.     if(bmp==NULL)
  54.     {
  55.         allegro_message("Can't find %s", file5);
  56.         exit(-1);
  57.     }
  58.     tex[5]=allegro_gl_make_texture(bmp);
  59.     destroy_bitmap(bmp);
  60. }
  61.  
  62. void CSkybox::draw(CVector camera, double roll)
  63. {
  64.     glDisable(GL_LIGHTING);
  65.     glEnable(GL_TEXTURE_2D);
  66.     glDisable(GL_DEPTH_TEST);
  67.     glColor3f(1, 1, 1);
  68.     
  69.     glBindTexture(GL_TEXTURE_2D, tex[0]);
  70.     glBegin(GL_QUADS);
  71.     glTexCoord2f(1, 1);
  72.     glVertex3f(1, 1, 1);
  73.     glTexCoord2f(0, 1);
  74.     glVertex3f(-1, 1, 1);
  75.     glTexCoord2f(0, 0);
  76.     glVertex3f(-1, 1, -1);
  77.     glTexCoord2f(1, 0);
  78.     glVertex3f(1, 1, -1);
  79.     glEnd();
  80.  
  81.     glBindTexture(GL_TEXTURE_2D, tex[1]);
  82.     glBegin(GL_QUADS);
  83.     glTexCoord2f(1, 1);
  84.     glVertex3f(-1, -1, 1);
  85.     glTexCoord2f(0, 1);
  86.     glVertex3f(1, -1, 1);
  87.     glTexCoord2f(0, 0);
  88.     glVertex3f(1, -1, -1);
  89.     glTexCoord2f(1, 0);
  90.     glVertex3f(-1, -1, -1);
  91.     glEnd();
  92.  
  93.     glBindTexture(GL_TEXTURE_2D, tex[2]);
  94.     glBegin(GL_QUADS);
  95.     glTexCoord2f(1, 1);
  96.     glVertex3f(-1, 1, 1);
  97.     glTexCoord2f(0, 1);
  98.     glVertex3f(-1, -1, 1);
  99.     glTexCoord2f(0, 0);
  100.     glVertex3f(-1, -1, -1);
  101.     glTexCoord2f(1, 0);
  102.     glVertex3f(-1, 1, -1);
  103.     glEnd();
  104.  
  105.     glBindTexture(GL_TEXTURE_2D, tex[3]);
  106.     glBegin(GL_QUADS);
  107.     glTexCoord2f(1, 1);
  108.     glVertex3f(1, -1, 1);
  109.     glTexCoord2f(0, 1);
  110.     glVertex3f(1, 1, 1);
  111.     glTexCoord2f(0, 0);
  112.     glVertex3f(1, 1, -1);
  113.     glTexCoord2f(1, 0);
  114.     glVertex3f(1, -1, -1);
  115.     glEnd();
  116.     
  117.     glBindTexture(GL_TEXTURE_2D, tex[4]);
  118.     glBegin(GL_QUADS);
  119.     glTexCoord2f(1, 1);
  120.     glVertex3f(1, -1, 1);
  121.     glTexCoord2f(0, 1);
  122.     glVertex3f(-1, -1, 1);
  123.     glTexCoord2f(0, 0);
  124.     glVertex3f(-1, 1, 1);
  125.     glTexCoord2f(1, 0);
  126.     glVertex3f(1, 1, 1);
  127.     glEnd();
  128.     
  129.     glBindTexture(GL_TEXTURE_2D, tex[5]);
  130.     glBegin(GL_QUADS);
  131.     glTexCoord2f(1, 1);
  132.     glVertex3f(1, 1, -1);
  133.     glTexCoord2f(0, 1);
  134.     glVertex3f(-1, 1, -1);
  135.     glTexCoord2f(0, 0);
  136.     glVertex3f(-1, -1, -1);
  137.     glTexCoord2f(1, 0);
  138.     glVertex3f(1, -1, -1);
  139.     glEnd();
  140.     
  141.     glEnable(GL_DEPTH_TEST);
  142.     glEnable(GL_LIGHTING);
  143. }
  144.  
  145.