home *** CD-ROM | disk | FTP | other *** search
/ Black Art of 3D Game Programming / Black_Art_of_3D_Game_Programming.iso / source / borland / chap_12 / gourdemo.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-01-31  |  3.2 KB  |  147 lines

  1.  
  2. // I N C L U D E S ///////////////////////////////////////////////////////////
  3.  
  4. #include <io.h>
  5. #include <conio.h>
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <dos.h>
  9. #include <bios.h>
  10. #include <fcntl.h>
  11. #include <memory.h>
  12. #include <malloc.h>
  13. #include <math.h>
  14. #include <string.h>
  15.  
  16. // include all of our stuff
  17.  
  18. #include "black3.h"
  19. #include "black4.h"
  20. #include "black5.h"
  21. #include "black6.h"
  22. #include "black8.h"
  23. #include "black9.h"
  24. #include "black11.h"
  25.  
  26. // M A I N /////////////////////////////////////////////////////////////////////
  27.  
  28. void main(void)
  29. {
  30.  
  31. int done=0,         // exit flag
  32.     x=140,y=60,     // position of triangle
  33.  
  34.     intensity_1=15,
  35.     intensity_2=50,
  36.     intensity_3=5;
  37.  
  38. char buffer[80]; // output string buffer
  39.  
  40. // set graphics mode to 13h
  41.  
  42. Set_Graphics_Mode(GRAPHICS_MODE13);
  43.  
  44. // alter the palette and introduce some greys
  45.  
  46. Make_Grey_Palette();
  47.  
  48. // draw gouraud shaded traingle
  49.  
  50. Draw_Triangle_2D_Gouraud(x,y,x-50,y+60,x+30,y+80,video_buffer,
  51.                         intensity_1,intensity_2,intensity_3);
  52.  
  53. // label vertices
  54.  
  55. Print_String(x,y-10,9,"1",1);
  56. Print_String(x-60,y+60,9,"2",1);
  57. Print_String(x+40,y+80,9,"3",1);
  58.  
  59. // main loop
  60.  
  61. while(!done)
  62.      {
  63.      // test for key
  64.  
  65.      if (kbhit())
  66.         {
  67.  
  68.         // get the key
  69.  
  70.         switch(getch())
  71.               {
  72.  
  73.               case 27: // escape key
  74.                  {
  75.                  // exit system
  76.                  done=1;
  77.  
  78.                  } break;
  79.  
  80.               case '7': // increase vertex 1 intensity
  81.                  {
  82.                  if (++intensity_1>63)
  83.                     intensity_1=63;
  84.                  } break;
  85.  
  86.               case '4': // decrease vertex 1 intensity
  87.                  {
  88.                  if (--intensity_1<0)
  89.                     intensity_1=0;
  90.                  } break;
  91.  
  92.               case '8': // increase vertex 2 intensity
  93.                  {
  94.                  if (++intensity_2>63)
  95.                     intensity_2=63;
  96.                  } break;
  97.  
  98.               case '5': // decrease vertex 2 intensity
  99.                  {
  100.                  if (--intensity_2<0)
  101.                     intensity_2=0;
  102.                  } break;
  103.  
  104.               case '9': // increase vertex 31 intensity
  105.                  {
  106.                  if (++intensity_3>63)
  107.                     intensity_3=63;
  108.                  } break;
  109.  
  110.               case '6': // decrease vertex 3 intensity
  111.                  {
  112.                  if (--intensity_3<0)
  113.                     intensity_3=0;
  114.                  } break;
  115.  
  116.               default:break;
  117.  
  118.               } // end switch
  119.  
  120.         // draw gouraud shaded triangle
  121.  
  122.         Draw_Triangle_2D_Gouraud(x,y,x-50,y+60,x+30,y+80,video_buffer,
  123.                                  intensity_1,intensity_2,intensity_3);
  124.  
  125.         } // end kbhit
  126.  
  127.  
  128.      // print out vertex intensities
  129.  
  130.      sprintf(buffer,"Vertex 1 = %d  ",intensity_1);
  131.      Print_String(0,0,12,buffer,0);
  132.  
  133.      sprintf(buffer,"Vertex 2 = %d  ",intensity_2);
  134.      Print_String(0,10,12,buffer,0);
  135.  
  136.      sprintf(buffer,"Vertex 3 = %d  ",intensity_3);
  137.      Print_String(0,20,12,buffer,0);
  138.  
  139.      } // end while
  140.  
  141. // restore text mode
  142.  
  143. Set_Graphics_Mode(TEXT_MODE);
  144.  
  145. } // end main
  146.  
  147.