Advertisement
Guest User

Untitled

a guest
Jun 29th, 2012
25
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <Windows.h>
  2.  
  3. #include <gl/glew.h>
  4. #include <gl/glut.h>
  5.  
  6. #include <iostream>
  7.  
  8. static int wWidth = 800;
  9. static int wHeight = 600;
  10. static float yfov = 45.0f;
  11. static float zNear = 1.0f;
  12. static float zFar = 1600.0f;
  13.  
  14. static float red[] = {
  15.     0.63f,
  16.     0.06f,
  17.     0.04f,
  18.     1.0f
  19. };
  20.  
  21. static float green[] = {
  22.     0.15f,
  23.     0.48f,
  24.     0.09f,
  25.     1.0f
  26. };
  27.  
  28. static float white[] = {
  29.     0.76f,
  30.     0.75f,
  31.     0.5f,
  32.     1.0f
  33. };
  34.  
  35. using namespace std;
  36.  
  37. void SetupLights(void);
  38.  
  39. void ReshapeWindow(int width, int height);
  40. void Render(void);
  41.  
  42. int main(int argc, char *argv[])
  43. {
  44.  
  45.     glutInit(&argc, argv);
  46.     glewInit();
  47.  
  48.     glutInitDisplayMode(GLUT_DEPTH | GLUT_RGBA | GLUT_DOUBLE);
  49.     glutInitWindowSize(wWidth, wHeight);
  50.     glutInitWindowPosition(100, 100);
  51.  
  52.     glutCreateWindow("wtf?");
  53.  
  54.     glutReshapeFunc(ReshapeWindow);
  55.     glutDisplayFunc(Render);
  56.  
  57.     glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
  58.     glEnable(GL_CULL_FACE);
  59.     glCullFace(GL_BACK);
  60.    
  61.     SetupLights();
  62.  
  63.     glutMainLoop();
  64.  
  65.  
  66. }
  67.  
  68. void SetupLights(void)
  69. {
  70.  
  71.     glEnable(GL_LIGHTING);
  72.  
  73.     float lightPosition[] = {
  74.         278.0f,
  75.         425.0f,
  76.         279.5f,
  77.         1.0f
  78.     };
  79.  
  80.     float lightIntensity[] = {
  81.         0.75f,
  82.         0.75f,
  83.         0.75f,
  84.         1.0f
  85.     };
  86.  
  87.     float lightDirection[] = {
  88.         0.0f,
  89.         -1.0f,
  90.         0.0f
  91.     };
  92.  
  93.    
  94.  
  95.     glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
  96.     glLightfv(GL_LIGHT0, GL_AMBIENT_AND_DIFFUSE, lightIntensity);
  97.     glLightfv(GL_LIGHT0, GL_SPECULAR, lightIntensity);
  98.  
  99.     glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, lightDirection);
  100.     //glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 120.0f);
  101.     //glLightf(GL_LIGHT0, GL_SPOT_EXPONENT, 128.0f);
  102.  
  103.     //glLighti(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 1);
  104.     //glLighti(GL_LIGHT0, GL_LINEAR_ATTENUATION, 1);
  105.     //glLighti(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, 1);
  106.  
  107.     glEnable(GL_LIGHT0);
  108.  
  109. }
  110.  
  111. void ReshapeWindow(int width, int height)
  112. {
  113.  
  114.     float ratio = (float) width / height;
  115.  
  116.     glMatrixMode(GL_PROJECTION);
  117.  
  118.     gluPerspective(yfov, ratio, zNear, zFar);
  119.     gluLookAt(278.0f, 273.0f, -800.0f, 278.0f, 273.0f, -799.0f, 0.0f, 1.0f, 0.0f);
  120.  
  121.     glMatrixMode(GL_MODELVIEW);
  122.  
  123. }
  124.  
  125. void Render(void)
  126. {
  127.  
  128.     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  129.  
  130.    
  131.     glBegin(GL_TRIANGLES);
  132.        
  133.         // CEILING
  134.  
  135.         glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, white);
  136.         glMaterialfv(GL_FRONT, GL_SPECULAR, white);
  137.        
  138.         glNormal3f(0.0f, -1.0f, 0.0f);
  139.  
  140.         glVertex3f(556.0f, 548.8f, 0.0f);
  141.         glVertex3f(556.0f, 548.0f, 592.2f);
  142.         glVertex3f(0.0f, 548.8f, 0.0f);
  143.  
  144.         glVertex3f(556.0f, 548.0f, 592.2f);
  145.         glVertex3f(0.0f, 548.8f, 592.2f);
  146.         glVertex3f(0.0f, 548.8f, 0.0f);
  147.  
  148.         // FLOOR
  149.  
  150.         glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, white);
  151.         glMaterialfv(GL_FRONT, GL_SPECULAR, white);
  152.  
  153.         glNormal3f(0.0f, 1.0f, 0.0f);
  154.  
  155.         glVertex3f(552.8, 0.0f, 0.0f);
  156.         glVertex3f(0.0f, 0.0f, 0.0f);
  157.         glVertex3f(549.6f, 0.0f, 592.2f);
  158.  
  159.         glVertex3f(0.0f, 0.0f, 0.0f);
  160.         glVertex3f(0.0f, 0.0f, 592.2f);
  161.         glVertex3f(549.6f, 0.0f, 592.2f);
  162.  
  163.         // BACK WALL
  164.  
  165.         glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, white);
  166.         glMaterialfv(GL_FRONT, GL_SPECULAR, white);
  167.  
  168.         glNormal3f(0.0f, 0.0f, -1.0f);
  169.  
  170.         glVertex3f(549.6, 0.0f, 592.2f);
  171.         glVertex3f(0.0f, 0.0f, 592.2f);
  172.         glVertex3f(556.0f, 548.8f, 592.2f);
  173.  
  174.         glVertex3f(0.0f, 0.0f, 592.2f);
  175.         glVertex3f(0.0f, 548.8f, 592.2f);
  176.         glVertex3f(556.0f, 548.8f, 592.2f);
  177.  
  178.         // LEFT WALL
  179.  
  180.         glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red);
  181.         glMaterialfv(GL_FRONT, GL_SPECULAR, red);
  182.  
  183.         glNormal3f(-1.0f, 0.0f, 0.0f);
  184.  
  185.         glVertex3f(552.8f, 0.0f, 0.0f);
  186.         glVertex3f(549.6f, 0.0f, 592.2f);
  187.         glVertex3f(556.0f, 548.8f, 0.0f);
  188.  
  189.         glVertex3f(549.6f, 0.0f, 592.2f);
  190.         glVertex3f(556.0f, 548.8f, 592.2f);
  191.         glVertex3f(556.0f, 548.8f, 0.0f);
  192.  
  193.         // RIGHT WALL
  194.  
  195.         glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green);
  196.         glMaterialfv(GL_FRONT, GL_SPECULAR, green);
  197.  
  198.         glNormal3f(1.0f, 0.0f, 0.0f);
  199.  
  200.         glVertex3f(0.0f, 0.0f, 592.2f);
  201.         glVertex3f(0.0f, 0.0f, 0.0f);
  202.         glVertex3f(0.0f, 548.8f, 592.2f);
  203.  
  204.         glVertex3f(0.0f, 0.0f, 0.0f);
  205.         glVertex3f(0.0f, 548.8f, 0.0f);
  206.         glVertex3f(0.0f, 548.8f, 592.2f);
  207.  
  208.     glEnd();
  209.    
  210.     glutSwapBuffers();
  211.  
  212. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement