Advertisement
Guest User

123

a guest
Apr 23rd, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.32 KB | None | 0 0
  1. //#define PI 3.141592653
  2. //
  3. //int light_sample = 1;
  4. //
  5. //// инициализация
  6. //void init(void)
  7. //{
  8. //  // цвет фона
  9. //  glClearColor(0.3, 0.3, 0.3, 0.0);
  10. //  // рассчет освещения
  11. //  glEnable(GL_LIGHTING);
  12. //  // двухсторонний расчет освещения
  13. //  glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
  14. //  // автоматическое приведение нормалей к
  15. //  // единичной длине
  16. //  glEnable(GL_NORMALIZE);
  17. //}
  18. //
  19. //void reshape(int width, int height)
  20. //{
  21. //  // двухмерное окно вывода
  22. //  glViewport(0, 0, width, height);
  23. //  // ортогональная проекция
  24. //  glMatrixMode(GL_PROJECTION);
  25. //  glLoadIdentity();
  26. //  glOrtho(-1.2, 1.2, -1.2, 1.2, -1, 1);
  27. //  // модельная матрица единичная
  28. //  glMatrixMode(GL_MODELVIEW);
  29. //  glLoadIdentity();
  30. //}
  31. //
  32. //void display(void)
  33. //{
  34. //  // очищаем буфер кадра и глубины
  35. //  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  36. //  // свойства материала
  37. //  GLfloat material_diffuse[] = { 1.0, 1.0, 1.0, 1.0 };
  38. //  glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, material_diffuse);
  39. //  // установка источников света
  40. //  if (light_sample == 1)
  41. //  {
  42. //      // направленный источник света
  43. //      GLfloat light0_diffuse[] = { 0.4, 0.7, 0.2 };
  44. //      GLfloat light0_direction[] = { 0.0, 0.0, 1.0, 0.0 };
  45. //      glEnable(GL_LIGHT0);
  46. //      glLightfv(GL_LIGHT0, GL_DIFFUSE, light0_diffuse);
  47. //      glLightfv(GL_LIGHT0, GL_POSITION, light0_direction);
  48. //  }
  49. //  if (light_sample == 2)
  50. //  {
  51. //      // точечный источник света
  52. //      // убывание интенсивности с расстоянием
  53. //      // отключено (по умолчанию)
  54. //      GLfloat light1_diffuse[] = { 0.4, 0.7, 0.2 };
  55. //      GLfloat light1_position[] = { 0.0, 0.0, 1.0, 1.0 };
  56. //      glEnable(GL_LIGHT1);
  57. //      glLightfv(GL_LIGHT1, GL_DIFFUSE, light1_diffuse);
  58. //      glLightfv(GL_LIGHT1, GL_POSITION, light1_position);
  59. //  }
  60. //  if (light_sample == 3)
  61. //  {
  62. //      // точечный источник света
  63. //      // убывание интенсивности с расстоянием
  64. //      // задано функцией f(d) = 1.0 / (0.4 * d * d + 0.2 * d)
  65. //      GLfloat light2_diffuse[] = { 0.4, 0.7, 0.2 };
  66. //      GLfloat light2_position[] = { 0.0, 0.0, 1.0, 1.0 };
  67. //      glEnable(GL_LIGHT2);
  68. //      glLightfv(GL_LIGHT2, GL_DIFFUSE, light2_diffuse);
  69. //      glLightfv(GL_LIGHT2, GL_POSITION, light2_position);
  70. //      glLightf(GL_LIGHT2, GL_CONSTANT_ATTENUATION, 0.0);
  71. //      glLightf(GL_LIGHT2, GL_LINEAR_ATTENUATION, 0.2);
  72. //      glLightf(GL_LIGHT2, GL_QUADRATIC_ATTENUATION, 0.4);
  73. //  }
  74. //  if (light_sample == 4)
  75. //  {
  76. //      // прожектор
  77. //      // убывание интенсивности с расстоянием
  78. //      // отключено (по умолчанию)
  79. //      // половина угла при вершине 30 градусов
  80. //      // направление на центр плоскости
  81. //      GLfloat light3_diffuse[] = { 0.4, 0.7, 0.2 };
  82. //      GLfloat light3_position[] = { 0.0, 0.0, 1.0, 1.0 };
  83. //      GLfloat light3_spot_direction[] = { 0.0, 0.0, -1.0 };
  84. //      glEnable(GL_LIGHT3);
  85. //      glLightfv(GL_LIGHT3, GL_DIFFUSE, light3_diffuse);
  86. //      glLightfv(GL_LIGHT3, GL_POSITION, light3_position);
  87. //      glLightf(GL_LIGHT3, GL_SPOT_CUTOFF, 30);
  88. //      glLightfv(GL_LIGHT3, GL_SPOT_DIRECTION, light3_spot_direction);
  89. //  }
  90. //  if (light_sample == 5)
  91. //  {
  92. //      // прожектор
  93. //      // убывание интенсивности с расстоянием
  94. //      // отключено (по умолчанию)
  95. //      // половина угла при вершине 30 градусов
  96. //      // направление на центр плоскости
  97. //      // включен рассчет убывания интенсивности для прожектора
  98. //      GLfloat light4_diffuse[] = { 0.4, 0.7, 0.2 };
  99. //      GLfloat light4_position[] = { 0.0, 0.0, 1.0, 1.0 };
  100. //      GLfloat light4_spot_direction[] = { 0.0, 0.0, -1.0 };
  101. //      glEnable(GL_LIGHT4);
  102. //      glLightfv(GL_LIGHT4, GL_DIFFUSE, light4_diffuse);
  103. //      glLightfv(GL_LIGHT4, GL_POSITION, light4_position);
  104. //      glLightf(GL_LIGHT4, GL_SPOT_CUTOFF, 30);
  105. //      glLightfv(GL_LIGHT4, GL_SPOT_DIRECTION, light4_spot_direction);
  106. //      glLightf(GL_LIGHT4, GL_SPOT_EXPONENT, 15.0);
  107. //  }
  108. //  if (light_sample == 6)
  109. //  {
  110. //      // несколько источников света
  111. //      GLfloat light5_diffuse[] = { 1.0, 0.0, 0.0 };
  112. //      GLfloat light5_position[] = { 0.5 * cos(0.0), 0.5 * sin(0.0), 1.0, 1.0 };
  113. //      glEnable(GL_LIGHT5);
  114. //      glLightfv(GL_LIGHT5, GL_DIFFUSE, light5_diffuse);
  115. //      glLightfv(GL_LIGHT5, GL_POSITION, light5_position);
  116. //      glLightf(GL_LIGHT5, GL_CONSTANT_ATTENUATION, 0.0);
  117. //      glLightf(GL_LIGHT5, GL_LINEAR_ATTENUATION, 0.4);
  118. //      glLightf(GL_LIGHT5, GL_QUADRATIC_ATTENUATION, 0.8);
  119. //      GLfloat light6_diffuse[] = { 0.0, 1.0, 0.0 };
  120. //      GLfloat light6_position[] = { 0.5 * cos(2 * PI / 3), 0.5 * sin(2 * PI / 3), 1.0, 1.0 };
  121. //      glEnable(GL_LIGHT6);
  122. //      glLightfv(GL_LIGHT6, GL_DIFFUSE, light6_diffuse);
  123. //      glLightfv(GL_LIGHT6, GL_POSITION, light6_position);
  124. //      glLightf(GL_LIGHT6, GL_CONSTANT_ATTENUATION, 0.0);
  125. //      glLightf(GL_LIGHT6, GL_LINEAR_ATTENUATION, 0.4);
  126. //      glLightf(GL_LIGHT6, GL_QUADRATIC_ATTENUATION, 0.8);
  127. //      GLfloat light7_diffuse[] = { 0.0, 0.0, 1.0 };
  128. //      GLfloat light7_position[] = { 0.5 * cos(4 * PI / 3), 0.5 * sin(4 * PI / 3), 1.0, 1.0 };
  129. //      glEnable(GL_LIGHT7);
  130. //      glLightfv(GL_LIGHT7, GL_DIFFUSE, light7_diffuse);
  131. //      glLightfv(GL_LIGHT7, GL_POSITION, light7_position);
  132. //      glLightf(GL_LIGHT7, GL_CONSTANT_ATTENUATION, 0.0);
  133. //      glLightf(GL_LIGHT7, GL_LINEAR_ATTENUATION, 0.4);
  134. //      glLightf(GL_LIGHT7, GL_QUADRATIC_ATTENUATION, 0.8);
  135. //  }
  136. //  // плоскость
  137. //  GLfloat x, y;
  138. //  glBegin(GL_QUADS);
  139. //  glNormal3f(0.0, 0.0, -1.0);
  140. //  for (x = -1.0; x < 1.0; x += 0.005)
  141. //  {
  142. //      for (y = -1.0; y < 1.0; y += 0.005)
  143. //      {
  144. //          glVertex3f(x, y, 0.0);
  145. //          glVertex3f(x, y + 0.005, 0.0);
  146. //          glVertex3f(x + 0.005, y + 0.005, 0.0);
  147. //          glVertex3f(x + 0.005, y, 0.0);
  148. //      }
  149. //  }
  150. //  glEnd();
  151. //  // отключение источников света
  152. //  glDisable(GL_LIGHT0);
  153. //  glDisable(GL_LIGHT1);
  154. //  glDisable(GL_LIGHT2);
  155. //  glDisable(GL_LIGHT3);
  156. //  glDisable(GL_LIGHT4);
  157. //  glDisable(GL_LIGHT5);
  158. //  glDisable(GL_LIGHT6);
  159. //  glDisable(GL_LIGHT7);
  160. //  // элемент двойной буферизации
  161. //  glutSwapBuffers();
  162. //}
  163. //
  164. //
  165. //void idle()
  166. //{
  167. //  angle += 1.0f;
  168. //  glutPostRedisplay();
  169. //}
  170. //
  171. //void keyboard_function(unsigned char key, int x, int y)
  172. //{
  173. //  if (key == '1') light_sample = 1;
  174. //  if (key == '2') light_sample = 2;
  175. //  if (key == '3') light_sample = 3;
  176. //  if (key == '4') light_sample = 4;
  177. //  if (key == '5') light_sample = 5;
  178. //  if (key == '6') light_sample = 6;
  179. //  glutPostRedisplay();
  180. //}
  181. //
  182. //void main(int argc, char** argv)
  183. //{
  184. //  glutInit(&argc, argv);
  185. //  glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
  186. //  glutInitWindowPosition(50, 100);
  187. //  glutInitWindowSize(500, 500);
  188. //  glutCreateWindow("4.4. Пример установки источников света в OpenGL. (с) compgraphics.info");
  189. //  init();
  190. //  glutDisplayFunc(display);
  191. //  glutReshapeFunc(reshape);
  192. //  glutKeyboardFunc(keyboard_function);
  193. //  glutIdleFunc(idle);
  194. //  glutMainLoop();
  195. //}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement