Advertisement
Guest User

Untitled

a guest
Jan 27th, 2020
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.43 KB | None | 0 0
  1. #pragma warning(disable : 4996)
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include "glut.h"
  5. #include <string.h>
  6. #include <stdio.h>
  7. #include "materials.h"
  8.  
  9. // Definicja stalych
  10. #define OBSERWATOR_FOV_Y 10.0
  11. #define odlmin 10.0
  12. #define odlmax 300.0
  13.  
  14. #define M_PI 3.14159
  15. #define DEG2RAD(x) ((float)(x)*M_PI/180.0)
  16.  
  17. // Zmienne globalne
  18. int szerokoscOkna = 800;
  19. int wysokoscOkna = 600;
  20.  
  21. GLfloat odl = 200.0;
  22. GLfloat rotObsX = 40.0;
  23. GLfloat rotObsY = 40.0;
  24. GLfloat rotObsZ = 0.0;
  25.  
  26. int iloscpodzialowpoziomych = 12;
  27. int zrodlo1 = 1;
  28. int zrodlo2 = 1;
  29. int obecnymaterial = 0;
  30. int normalne = 1;
  31. int smooth = 0;
  32. int fill = 1;
  33. float length;
  34.  
  35. float lPionowych = 10; // Liczba podzialow pionowych
  36. float lPoziomych = 10; // Liczba podzialow poziomych
  37. float promien = 3.0; // Promien walca
  38. float wysokosc = 3.0; // Wysokosc walca
  39. int zmienna = 5;
  40. int zmienna2 = 5;
  41.  
  42. int a = 3;
  43. double h = 5;
  44. int R = 6;
  45. int r = 8;
  46. int n = 40;
  47. int nMin = 4;
  48. int nMax = 64;
  49. double dAlfa;
  50. int i = 0, j;
  51. int N1 = 20;
  52. int N2 = 10;
  53. int rW = 15;
  54. int rZ;
  55. int srA;
  56.  
  57. float r_reflektor = 30;
  58. float predkosc_reflektor = 0.1;
  59. float nachylenie_reflektor = 0;
  60. float kat_reflektor = 0;
  61.  
  62. float material1[5][4] = {
  63. {1, 0, 1, 1.0},// [0] wspolczynnik odbicia swiatla otoczenia
  64. {1, 0, 1, 1.0},// [1] wspolczynnik odbicia swiatla rozproszonego
  65. {1, 0, 1, 1.0},// [2] wspolczynnik odbicia swiatla lustrzanego
  66. {6,0,0,0}, // [3] polysk
  67. {0,0,0.0,1.0} // [4] kolor swiatla emitowanego
  68. };
  69. // Tablica parametrow materialu nr 2
  70. float material2[5][4] = {
  71. {0, 1,0, 1}, // [0] wspolczynnik odbicia swiatla otoczenia
  72. {0, 1,0, 1.0}, // [1] wspolczynnik odbicia swiatla rozproszonego
  73. {0, 0.1,0, 1.0}, // [2] wspolczynnik odbicia swiatla lustrzanego
  74. {10, 0.0, 0.0, 0.0}, // [3] polysk
  75. {0.0, 0.0, 0.0, 1.0} // [4] kolor swiatla emitowanego
  76. };
  77.  
  78. //reflektor
  79. GLfloat param_swiatla1[5][4] = {
  80. {1,1,1,1}, // [0] światło otoczenia
  81. {1,1,1,1}, // [1] światło rozproszone
  82. {1,1,1,1}, // [2] światło zwierciadlane
  83. {0,0,0,1}, // [3] położenie
  84. {-1,0,0} // [4] kierunek świecenia
  85. };
  86.  
  87. //kierunkowe
  88. GLfloat param_swiatla2[5][4] = {
  89. {0.7,0.7,0.2,1}, // [0] światło otoczenia
  90. {0.7,0.7,0.2,1}, // [1] światło rozproszone
  91. {0.7,0.7,0.2,1}, // [2] światło zwierciadlane
  92. {-10,10,10,0}, // [3] położenie
  93. {0,0,0,0} // [4] kierunek świecenia
  94. };
  95.  
  96.  
  97. // Prototypy funkcji
  98. void UstawParametryWidoku(int szer, int wys);
  99. void WyswietlObraz(void);
  100. void ObslugaKlawiatury(unsigned char klawisz, int x, int y);
  101. void RysujTekstRastrowy(void* font, char* tekst);
  102. void RysujNakladke(void);
  103.  
  104. void UstawSwiatlaIMaterialy()
  105. {
  106. glEnable(GL_LIGHTING);
  107. // Odblokowanie zrodla swiatla nr 1
  108.  
  109.  
  110. if (zrodlo1 == 1)
  111. {
  112. glDisable(GL_LIGHTING);
  113. glPushMatrix();
  114.  
  115. glRotatef(nachylenie_reflektor, 1, 0, 0);
  116. glBegin(GL_LINE_STRIP);
  117. glColor3f(0, 0, 0);
  118. for (int i = 0; i <= 360; i = i + 2)
  119. {
  120. glVertex3f(r_reflektor * cos(DEG2RAD(i)), 0, r_reflektor * sin(DEG2RAD(i)));
  121. }
  122. glEnd();
  123. glPopMatrix();
  124.  
  125. glPushMatrix();
  126.  
  127. glRotatef(nachylenie_reflektor, 1, 0, 0);
  128. glRotatef(kat_reflektor, 0, 1, 0);
  129. glTranslatef(r_reflektor, 0, 0);
  130.  
  131.  
  132. glColor3f(1, 1, 0);
  133. glutSolidSphere(0.3, 5, 5);
  134. glEnable(GL_LIGHTING);
  135.  
  136. glEnable(GL_LIGHT0);
  137.  
  138. // Inicjowanie zrodla swiatla
  139. glLightfv(GL_LIGHT0, GL_DIFFUSE, param_swiatla1[1]);
  140. glLightfv(GL_LIGHT0, GL_SPECULAR, param_swiatla1[2]);
  141. glLightfv(GL_LIGHT0, GL_POSITION, param_swiatla1[3]);
  142. glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 30);
  143. glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, param_swiatla1[4]);
  144.  
  145. glPopMatrix();
  146. }
  147. else {
  148. glDisable(GL_LIGHT0);
  149. }
  150.  
  151. if (zrodlo2 == 1)
  152. {
  153. glEnable(GL_LIGHT1);
  154.  
  155. // Inicjowanie zrodla swiatla
  156. glLightfv(GL_LIGHT1, GL_DIFFUSE, param_swiatla2[1]);
  157. glLightfv(GL_LIGHT1, GL_SPECULAR, param_swiatla2[2]);
  158. glLightfv(GL_LIGHT1, GL_POSITION, param_swiatla2[3]);
  159. glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, param_swiatla2[4]);
  160. }
  161. else {
  162. glDisable(GL_LIGHT1);
  163. }
  164.  
  165. switch (obecnymaterial)
  166. {
  167. case 0:
  168. glMaterialfv(GL_FRONT, GL_AMBIENT, material1[0]);
  169. glMaterialfv(GL_FRONT, GL_DIFFUSE, material1[1]);
  170. glMaterialfv(GL_FRONT, GL_SPECULAR, material1[2]);
  171. glMaterialfv(GL_FRONT, GL_SHININESS, material1[3]);
  172. glMaterialfv(GL_FRONT, GL_EMISSION, material1[4]);
  173. break;
  174. case 1:
  175. glMaterialfv(GL_FRONT, GL_AMBIENT, material2[0]);
  176. glMaterialfv(GL_FRONT, GL_DIFFUSE, material2[1]);
  177. glMaterialfv(GL_FRONT, GL_SPECULAR, material2[2]);
  178. glMaterialfv(GL_FRONT, GL_SHININESS, material2[3]);
  179. glMaterialfv(GL_FRONT, GL_EMISSION, material2[4]);
  180. break;
  181. case 2:
  182. glMaterialfv(GL_FRONT, GL_AMBIENT, JadeAmbient);
  183. glMaterialfv(GL_FRONT, GL_DIFFUSE, JadeDiffuse);
  184. glMaterialfv(GL_FRONT, GL_SPECULAR, JadeSpecular);
  185. glMaterialfv(GL_FRONT, GL_SHININESS, &JadeShininess);
  186. glMaterialfv(GL_FRONT, GL_EMISSION, material2[4]);
  187. break;
  188. default:
  189. break;
  190. }
  191. }
  192.  
  193. void SyncSmoothIFill()
  194. {
  195. if (smooth)
  196. glShadeModel(GL_SMOOTH);
  197. else
  198. glShadeModel(GL_FLAT);
  199.  
  200. if (fill)
  201. glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
  202. else
  203. glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
  204. }
  205.  
  206.  
  207. GLfloat getX(GLfloat r, GLfloat fi, GLfloat teta)
  208. {
  209. return r * cos(M_PI / 2 - fi) * cos(teta);
  210. }
  211.  
  212. GLfloat getY(GLfloat r, GLfloat fi, GLfloat teta)
  213. {
  214. return r * cos(M_PI / 2 - fi) * sin(teta);
  215. }
  216.  
  217. GLfloat getZ(GLfloat r, GLfloat fi)
  218. {
  219. return r * sin(M_PI / 2 - fi);
  220. }
  221.  
  222.  
  223. void wektory(float radius, int slices, int stacks)
  224. {
  225. glDisable(GL_LIGHTING);
  226.  
  227. double r1 = 15;
  228. double r2 = 19;
  229. double angle;
  230. double H = 4;
  231. int i = 0;
  232. double alfa = 0, PI = 3.1415;
  233. int bok = N1;
  234.  
  235. glBegin(GL_LINES);
  236. glColor3f(1, 0, 0);
  237. for (angle = 0; angle < (PI * 2.0); angle += (2.0 * PI / bok))
  238. {
  239. glVertex3f(r1 * cos(angle), 0, r1 * sin(angle));
  240. glVertex3f(r1 * cos(angle), -1, r1 * sin(angle));
  241.  
  242. glVertex3f(r2 * cos(angle), 0, r2 * sin(angle));
  243. glVertex3f(r2 * cos(angle), -1, r2 * sin(angle));
  244.  
  245.  
  246. glVertex3f(r1 * cos(angle), 0, r1 * sin(angle));
  247. glVertex3f((r1 - cos(45)) * cos(angle), sin(45), (r1 - cos(45)) * sin(angle));
  248.  
  249. glVertex3f(r2 * cos(angle), H, r2 * sin(angle));
  250. glVertex3f((r2 - cos(45)) * cos(angle), H + sin(45), (r2 - cos(45)) * sin(angle));
  251.  
  252.  
  253. glVertex3f(r2 * cos(angle), 0, r2 * sin(angle));
  254. glVertex3f((r2 + 1) * cos(angle), 0, (r2 + 1) * sin(angle));
  255.  
  256. glVertex3f(r2 * cos(angle), H, r2 * sin(angle));
  257. glVertex3f((r2 + 1) * cos(angle), H, (r2 + 1) * sin(angle));
  258.  
  259. }
  260. glEnd();
  261.  
  262. glEnable(GL_LIGHTING);
  263. }
  264.  
  265.  
  266. void Pierscien()
  267. {
  268. double r1 = 15;
  269. double r2 = 19;
  270. double angle;
  271. double H = 4;
  272. int i = 0;
  273. double alfa = 0, PI = 3.1415;
  274. int bok = N1;
  275. glEnable(GL_NORMALIZE);
  276.  
  277. glBegin(GL_TRIANGLES);
  278.  
  279. for (angle = 0; angle < (PI * 2.0); angle += (2.0 * PI / bok))
  280. {
  281. glNormal3f(0, -1, 0);
  282.  
  283. glVertex3f(r1 * cos(angle), 0, r1 * sin(angle));
  284. glVertex3f(r2 * cos(angle), 0, r2 * sin(angle));
  285. glVertex3f(r1 * cos(angle + 2.0 * PI / bok), 0, r1 * sin(angle + 2.0 * PI / bok));
  286.  
  287. glVertex3f(r2 * cos(angle), 0, r2 * sin(angle));
  288. glVertex3f(r2 * cos(angle + 2.0 * PI / bok), 0, r2 * sin(angle + 2.0 * PI / bok));
  289. glVertex3f(r1 * cos(angle + 2.0 * PI / bok), 0, r1 * sin(angle + 2.0 * PI / bok));
  290. }
  291. for (angle = 0; angle < (PI * 2.0); angle += (2.0 * PI / bok))
  292. {
  293. glNormal3f(-cos(45) * cos(angle), sin(45), -cos(45) * sin(angle));
  294.  
  295. glVertex3f(r1 * cos(angle), 0, r1 * sin(angle));
  296. glVertex3f(r2 * cos(angle), H, r2 * sin(angle));
  297. glVertex3f(r1 * cos(angle + 2.0 * PI / bok), 0, r1 * sin(angle + 2.0 * PI / bok));
  298.  
  299. glVertex3f(r2 * cos(angle), H, r2 * sin(angle));
  300. glVertex3f(r2 * cos(angle + 2.0 * PI / bok), H, r2 * sin(angle + 2.0 * PI / bok));
  301. glVertex3f(r1 * cos(angle + 2.0 * PI / bok), 0, r1 * sin(angle + 2.0 * PI / bok));
  302. }
  303.  
  304. for (angle = 0; angle < (PI * 2.0); angle += (2.0 * PI / bok))
  305. {
  306. glNormal3f(cos(angle), 0, sin(angle));
  307. glVertex3f(r2 * cos(angle), 0, r2 * sin(angle));
  308. glVertex3f(r2 * cos(angle), H, r2 * sin(angle));
  309. glVertex3f(r2 * cos(angle + 2.0 * PI / bok), 0, r2 * sin(angle + 2.0 * PI / bok));
  310.  
  311. glVertex3f(r2 * cos(angle), H, r2 * sin(angle));
  312. glVertex3f(r2 * cos(angle + 2.0 * PI / bok), H, r2 * sin(angle + 2.0 * PI / bok));
  313. glVertex3f(r2 * cos(angle + 2.0 * PI / bok), 0, r2 * sin(angle + 2.0 * PI / bok));
  314. }
  315.  
  316. glEnd();
  317. }
  318.  
  319.  
  320. //////////////////////////////////////////////////////////////////////////////////////////
  321. // Funkcja ustawiajaca parametry rzutu perspektywicznego i rozmiary viewportu. Powinna
  322. // byæ wywolywana kazdorazowo po zmianie rozmiarow okna programu.
  323. void UstawParametryWidoku(int szer, int wys)
  324. {
  325. // Zapamietanie wielkosci widoku
  326. szerokoscOkna = szer;
  327. wysokoscOkna = wys;
  328.  
  329. // Ustawienie parametrow viewportu
  330. glViewport(0, 0, szerokoscOkna, wysokoscOkna);
  331.  
  332. // Przejscie w tryb modyfikacji macierzy rzutowania
  333. glMatrixMode(GL_PROJECTION);
  334. glLoadIdentity();
  335. gluPerspective(OBSERWATOR_FOV_Y, (float)szerokoscOkna / (float)wysokoscOkna, 1.0, 1000.0);
  336. }
  337.  
  338.  
  339. //////////////////////////////////////////////////////////////////////////////////////////
  340. // Funkcja wyswietlajaca pojedyncza klatke animacji
  341. void WyswietlObraz(void)
  342. {
  343. // Wyczyszczenie bufora koloru i bufora glebokosci
  344. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  345.  
  346. // Przejscie w tryb modyfikacji macierzy przeksztalcen geometrycznych
  347. glMatrixMode(GL_MODELVIEW);
  348.  
  349. // Zastapienie aktywnej macierzy macierza jednostkowa
  350. glLoadIdentity();
  351.  
  352. // Ustalenie polozenia obserwatora
  353. glTranslatef(0, 0, -odl);
  354. glRotatef(rotObsX, 1, 0, 0);
  355. glRotatef(rotObsY, 0, 1, 0);
  356. glRotatef(rotObsZ, 0, 0, 1);
  357.  
  358.  
  359. UstawSwiatlaIMaterialy();
  360. //RysujUklad();
  361. //glColor3f(1.0, 1.0, 1.0);
  362. //RysujPierscien(10, 4, iloscpodzialowpoziomych);
  363. kat_reflektor = kat_reflektor + predkosc_reflektor;
  364. Pierscien();
  365. RysujNakladke();
  366. if (normalne)
  367. wektory(3, N1, N2);
  368.  
  369.  
  370. // Przelaczenie buforow ramki
  371. glutSwapBuffers();
  372. }
  373.  
  374. void RysujTekstRastrowy(void* font, char* tekst)
  375. {
  376. int i;
  377.  
  378. for (i = 0; i < (int)strlen(tekst); i++)
  379. glutBitmapCharacter(font, tekst[i]);
  380. }
  381.  
  382. void RysujNakladke(void)
  383. {
  384. char buf[255];
  385.  
  386. // Zmiana typu rzutu z perspektywicznego na ortogonalny
  387. glMatrixMode(GL_PROJECTION);
  388. glPushMatrix();
  389. glLoadIdentity();
  390. glOrtho(0.0, szerokoscOkna, 0.0, wysokoscOkna, -100.0, 100.0);
  391.  
  392. // Modelowanie sceny 2D (zawartosci nakladki)
  393. glMatrixMode(GL_MODELVIEW);
  394. glPushMatrix();
  395. glLoadIdentity();
  396.  
  397. // Zablokowanie oswietlenia (mialoby ono wplyw na kolor tekstu)
  398. glDisable(GL_LIGHTING);
  399.  
  400. // Okreslenie koloru tekstu
  401. glColor3f(1.0, 1.0, 1.0);
  402.  
  403. // RYSOWANIE MENU PARAMETROW ZRODLA SWIATLA
  404.  
  405. sprintf(buf, "Swiatlo: Klawisze 3, 4");
  406. glRasterPos2i(30, 150);
  407. RysujTekstRastrowy(GLUT_BITMAP_8_BY_13, buf);
  408.  
  409. sprintf(buf, "Zobrazowanie geometryczne: Klawisz 7");
  410. glRasterPos2i(30, 140);
  411. RysujTekstRastrowy(GLUT_BITMAP_8_BY_13, buf);
  412.  
  413. sprintf(buf, "Material: Klawisz 5");
  414. glRasterPos2i(30, 130);
  415. RysujTekstRastrowy(GLUT_BITMAP_8_BY_13, buf);
  416.  
  417. sprintf(buf, "Podzialy poziome: 1+,!-");
  418. glRasterPos2i(30, 120);
  419. RysujTekstRastrowy(GLUT_BITMAP_8_BY_13, buf);
  420.  
  421. sprintf(buf, "Odleglosc z+ x-");
  422. glRasterPos2i(30, 110);
  423. RysujTekstRastrowy(GLUT_BITMAP_8_BY_13, buf);
  424.  
  425. sprintf(buf, "Wygladzanie 6");
  426. glRasterPos2i(30, 100);
  427. RysujTekstRastrowy(GLUT_BITMAP_8_BY_13, buf);
  428.  
  429. sprintf(buf, "polygon mode 7");
  430. glRasterPos2i(30, 90);
  431. RysujTekstRastrowy(GLUT_BITMAP_8_BY_13, buf);
  432.  
  433. sprintf(buf, "wektory normalne 8");
  434. glRasterPos2i(30, 80);
  435. RysujTekstRastrowy(GLUT_BITMAP_8_BY_13, buf);
  436.  
  437. sprintf(buf, "promien reflektora i+/j-");
  438. glRasterPos2i(30, 70);
  439. RysujTekstRastrowy(GLUT_BITMAP_8_BY_13, buf);
  440.  
  441. sprintf(buf, "predkosc reflektora o+/k-");
  442. glRasterPos2i(30, 60);
  443. RysujTekstRastrowy(GLUT_BITMAP_8_BY_13, buf);
  444.  
  445. sprintf(buf, "kat reflektora p+/l-");
  446. glRasterPos2i(30, 50);
  447. RysujTekstRastrowy(GLUT_BITMAP_8_BY_13, buf);
  448.  
  449. // Przywrocenie macierzy sprzed wywolania funkcji
  450. glMatrixMode(GL_PROJECTION);
  451. glPopMatrix();
  452. glMatrixMode(GL_MODELVIEW);
  453. glPopMatrix();
  454.  
  455. // Odblokowanie oswietlenia
  456. glEnable(GL_LIGHTING);
  457. }
  458.  
  459. //////////////////////////////////////////////////////////////////////////////////////////
  460. // Funkcja obslugi klawiatury
  461. void ObslugaKlawiatury(unsigned char klawisz, int x, int y)
  462. {
  463. switch (klawisz)
  464. {
  465. //Odległość obserwatora
  466. case 'z':
  467. odl = odl > odlmin ? odl - 3.0 : odl;
  468. break;
  469. case 'x':
  470. odl = odl < odlmax ? odl + 3.0 : odl;
  471. break;
  472. //
  473.  
  474. //Podziały pierścienia
  475. case '1':
  476. if (N1 < nMax) N1++;
  477. break;
  478. case '!':
  479. if (N1 > nMin) N1--;
  480. break;
  481. case '2':
  482. if (N2 < nMax) N2++;
  483. break;
  484. case '@':
  485. if (N2 > nMin) N2--;
  486. break;
  487.  
  488. //Źródła światła
  489. case '3':
  490. zrodlo1 = !zrodlo1;
  491. break;
  492. case '4':
  493. zrodlo2 = !zrodlo2;
  494. break;
  495.  
  496. //Zmiana materiału bryły
  497. case '5':
  498. obecnymaterial++;
  499. if (obecnymaterial > 2) obecnymaterial = 0;
  500. break;
  501. //
  502.  
  503. //Cieniowanie
  504. case '6':
  505. smooth = !smooth;
  506. SyncSmoothIFill();
  507. break;
  508.  
  509. case '7':
  510. fill = !fill;
  511. SyncSmoothIFill();
  512. break;
  513. //
  514.  
  515. case '8':
  516. normalne = !normalne;
  517. break;
  518.  
  519. //Poruszanie się obserwatora
  520. case 'q':
  521. case 'Q':
  522. rotObsZ = rotObsZ + 1.0;
  523. break;
  524. case 'e':
  525. case 'E':
  526. rotObsZ = rotObsZ - 1.0;
  527. break;
  528. case 'w':
  529. case 'W':
  530. rotObsX = rotObsX + 1.0;
  531. break;
  532. case 's':
  533. case 'S':
  534. rotObsX = rotObsX - 1.0;
  535. break;
  536. case 'a':
  537. case 'A':
  538. rotObsY = rotObsY - 1.0;
  539. break;
  540. case 'd':
  541. case 'D':
  542. rotObsY = rotObsY + 1.0;
  543. break;
  544. //
  545.  
  546.  
  547. case 'i':
  548. r_reflektor++;
  549. break;
  550. case 'j':
  551. r_reflektor--;
  552. break;
  553. case 'o':
  554. predkosc_reflektor = predkosc_reflektor + 0.1;
  555. break;
  556. case 'k':
  557. predkosc_reflektor = predkosc_reflektor - 0.1;
  558. break;
  559. case 'p':
  560. nachylenie_reflektor = nachylenie_reflektor + 1;
  561. break;
  562. case 'l':
  563. nachylenie_reflektor = nachylenie_reflektor - 1;
  564. break;
  565.  
  566. case 27:
  567. exit(0);
  568. break;
  569. default:
  570. break;
  571. }
  572. }
  573.  
  574.  
  575. //////////////////////////////////////////////////////////////////////////////////////////
  576. // Glowna funkcja programu
  577. int main(int argc, char** argv)
  578. {
  579. // Zainicjowanie biblioteki GLUT
  580. glutInit(&argc, argv);
  581.  
  582. // Ustawienie trybu wyswietlania
  583. glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
  584.  
  585. // Ustawienie polozenia dolenego lewego rogu okna
  586. glutInitWindowPosition(100, 100);
  587.  
  588. // Ustawienie rozmiarow okna
  589. glutInitWindowSize(szerokoscOkna, wysokoscOkna);
  590.  
  591. // Utworzenie okna
  592. glutCreateWindow("Szescian");
  593.  
  594. // Odblokowanie bufora glebokosci
  595. glEnable(GL_DEPTH_TEST);
  596.  
  597. // Ustawienie wartosci czyszczacej zawartosc bufora glebokosci
  598. glClearDepth(1000.0);
  599.  
  600. // Ustawienie koloru czyszczenia bufora ramki
  601. glClearColor(0.3f, 0.3f, 0.3f, 0.0f);
  602.  
  603. // Wlaczenie wyswietlania wielokatow w postaci obrysow (przydatne w celach diagnostycznych).
  604. glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
  605.  
  606. // Zarejestrowanie funkcji (callback) odpowiedzialnej za
  607. glutDisplayFunc(WyswietlObraz);
  608.  
  609. // Zarejestrowanie funkcji (callback) wywolywanej za kazdym razem kiedy
  610. // zmieniane sa rozmiary okna
  611. glutReshapeFunc(UstawParametryWidoku);
  612.  
  613. // Zarejestrowanie funkcji wykonywanej gdy okno nie obsluguje
  614. // zadnych zadan
  615. glutIdleFunc(WyswietlObraz);
  616.  
  617. // Zarejestrowanie funkcji obslugi klawiatury
  618. glutKeyboardFunc(ObslugaKlawiatury);
  619.  
  620. // Obsluga glownej petli programu (wywolywanie zarejestrowanych callbackow
  621. // w odpowiedzi na odbierane zdarzenia lub obsluga stanu bezczynnosci)
  622. glutMainLoop();
  623.  
  624. return 0;
  625. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement