Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.00 KB | None | 0 0
  1. /****************************************************
  2. Grafika komputerowa, OpenGL w środowisku MS Windows
  3. ****************************************************/
  4.  
  5.  
  6. #include <windows.h>
  7. #include <math.h>
  8.  
  9. #include <gl\gl.h>
  10. #include <gl\glu.h>
  11.  
  12. #define PI 3.1415926
  13.  
  14. //deklaracja funkcji obslugi okna
  15. LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
  16.  
  17. BOOL SetWindowPixelFormat(HDC hDC);
  18. BOOL CreateViewGLContext(HDC hDC);
  19. void RenderScene();
  20. void CreateMaze();
  21.  
  22. int g_GLPixelIndex = 0;
  23. HGLRC g_hGLContext = NULL;
  24. HDC g_context = NULL;
  25.  
  26. double g_counter = 0.0;
  27.  
  28. enum GLDisplayListNames
  29. {
  30. //PRZEDNIA SCIANA
  31. Wall1a = 1,
  32. Wall1b = 2,
  33. Wall1c = 3,
  34. Wall1d = 4,
  35. Wall1e = 5,
  36. Wall1f = 6,
  37. Wall1g = 7,
  38. Wall1h = 8,
  39. Wall1i = 9,
  40. Wall1j = 10,
  41. Wall1k = 11,
  42. Wall1l = 12,
  43. Wall1m = 13,
  44. Wall1n = 14,
  45. Wall1o = 15,
  46. Wall1p = 16,
  47. Wall1r = 17,
  48. Wall1s = 18,
  49. //TYLNA ŚCIANA
  50. Wall2a = 19,
  51. Wall2b = 20,
  52. Wall2c = 21,
  53. Wall2d = 22,
  54. Wall2e = 23,
  55. Wall2f = 24,
  56. Wall2g = 25,
  57. Wall2h = 26,
  58. Wall2i = 27,
  59. Wall2j = 28,
  60. Wall2k = 29,
  61. Wall2l = 30,
  62. Wall2m = 31,
  63. Wall2n = 32,
  64. Wall2o = 33,
  65. Wall2p = 34,
  66. Wall2r = 35,
  67. Wall2s = 36,
  68.  
  69. //ŚCIANA BOCZNA1(lewy bok)
  70. Wall3a = 37,
  71. Wall3b = 38,
  72.  
  73. //ŚCIANA BOCZNA2(góra)
  74. Wall4a = 39,
  75. Wall4b = 40,
  76.  
  77. //ŚCIANA BOCZNA3(dół)
  78. Wall5a = 41,
  79. Wall5b = 42,
  80.  
  81. //ŚCIANA BOCZNA4(prawy bok)
  82. Wall6a = 43,
  83. Wall6b = 44,
  84. Wall6c = 45,
  85. Wall6d = 46,
  86. Wall6e = 47,
  87. Wall6f = 48,
  88. Wall6g = 49,
  89. Wall6h = 50,
  90. Wall6i = 51,
  91. Wall6j = 52,
  92. Wall6k = 53,
  93. Wall6l = 54,
  94.  
  95. Floor = 100,
  96. };
  97.  
  98. //funkcja Main - dla Windows
  99. int WINAPI WinMain(HINSTANCE hInstance,
  100. HINSTANCE hPrevInstance,
  101. LPSTR lpCmdLine,
  102. int nCmdShow)
  103. {
  104. MSG meldunek; //innymi slowy "komunikat"
  105. WNDCLASS nasza_klasa; //klasa głównego okna aplikacji
  106. HWND okno;
  107. static char nazwa_klasy[] = "Podstawowa";
  108.  
  109. //Definiujemy klase głównego okna aplikacji
  110. //Okreslamy tu wlasciwosci okna, szczegoly wygladu oraz
  111. //adres funkcji przetwarzajacej komunikaty
  112. nasza_klasa.style = CS_HREDRAW | CS_VREDRAW;
  113. nasza_klasa.lpfnWndProc = WndProc; //adres funkcji realizującej przetwarzanie meldunków
  114. nasza_klasa.cbClsExtra = 0 ;
  115. nasza_klasa.cbWndExtra = 0 ;
  116. nasza_klasa.hInstance = hInstance; //identyfikator procesu przekazany przez MS Windows podczas uruchamiania programu
  117. nasza_klasa.hIcon = 0;
  118. nasza_klasa.hCursor = LoadCursor(0, IDC_ARROW);
  119. nasza_klasa.hbrBackground = (HBRUSH) GetStockObject(GRAY_BRUSH);
  120. nasza_klasa.lpszMenuName = "Menu" ;
  121. nasza_klasa.lpszClassName = nazwa_klasy;
  122.  
  123. //teraz rejestrujemy klasę okna głównego
  124. RegisterClass (&nasza_klasa);
  125.  
  126. /*tworzymy okno główne
  127. okno będzie miało zmienne rozmiary, listwę z tytułem, menu systemowym
  128. i przyciskami do zwijania do ikony i rozwijania na cały ekran, po utworzeniu
  129. będzie widoczne na ekranie */
  130. okno = CreateWindow(nazwa_klasy, "Grafika komputerowa", WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
  131. 100, 50, 700, 700, NULL, NULL, hInstance, NULL);
  132.  
  133.  
  134. ShowWindow (okno, nCmdShow) ;
  135.  
  136. //odswiezamy zawartosc okna
  137. UpdateWindow (okno) ;
  138.  
  139. // GŁÓWNA PĘTLA PROGRAMU
  140. while (GetMessage(&meldunek, NULL, 0, 0))
  141. /* pobranie komunikatu z kolejki; funkcja GetMessage zwraca FALSE tylko dla
  142. komunikatu wm_Quit; dla wszystkich pozostałych komunikatów zwraca wartość TRUE */
  143. {
  144. TranslateMessage(&meldunek); // wstępna obróbka komunikatu
  145. DispatchMessage(&meldunek); // przekazanie komunikatu właściwemu adresatowi (czyli funkcji obslugujacej odpowiednie okno)
  146. }
  147. return (int)meldunek.wParam;
  148. }
  149.  
  150. /********************************************************************
  151. FUNKCJA OKNA realizujaca przetwarzanie meldunków kierowanych do okna aplikacji*/
  152. LRESULT CALLBACK WndProc (HWND okno, UINT kod_meldunku, WPARAM wParam, LPARAM lParam)
  153. {
  154. HMENU mPlik, mInfo, mGlowne;
  155.  
  156. /* PONIŻSZA INSTRUKCJA DEFINIUJE REAKCJE APLIKACJI NA POSZCZEGÓLNE MELDUNKI */
  157. switch (kod_meldunku)
  158. {
  159. case WM_CREATE: //meldunek wysyłany w momencie tworzenia okna
  160. {
  161. mPlik = CreateMenu();
  162. AppendMenu(mPlik, MF_STRING, 101, "&Koniec");
  163. mInfo = CreateMenu();
  164. AppendMenu(mInfo, MF_STRING, 200, "&Autor...");
  165. mGlowne = CreateMenu();
  166. AppendMenu(mGlowne, MF_POPUP, (UINT_PTR) mPlik, "&Plik");
  167. AppendMenu(mGlowne, MF_POPUP, (UINT_PTR) mInfo, "&Informacja");
  168. SetMenu(okno, mGlowne);
  169. DrawMenuBar(okno);
  170.  
  171. g_context = GetDC(okno);
  172.  
  173. if (SetWindowPixelFormat(g_context)==FALSE)
  174. return FALSE;
  175.  
  176. if (CreateViewGLContext(g_context)==FALSE)
  177. return 0;
  178.  
  179. CreateMaze(); // definiujemy listy tworzące labirynt
  180.  
  181. SetTimer(okno, 1, 33, NULL);
  182.  
  183. return 0;
  184. }
  185.  
  186. case WM_COMMAND: //reakcje na wybór opcji z menu
  187. switch (wParam)
  188. {
  189. case 101: DestroyWindow(okno); //wysylamy meldunek WM_DESTROY
  190. break;
  191. case 200: MessageBox(okno, "Imię i nazwisko:\nNumer indeksu: ", "Autor", MB_OK);
  192. }
  193. return 0;
  194.  
  195. case WM_LBUTTONDOWN: //reakcja na lewy przycisk myszki
  196. {
  197. int x = LOWORD(lParam);
  198. int y = HIWORD(lParam);
  199.  
  200. return 0;
  201. }
  202.  
  203. case WM_PAINT:
  204. {
  205. PAINTSTRUCT paint;
  206. HDC kontekst;
  207. kontekst = BeginPaint(okno, &paint);
  208.  
  209. RenderScene();
  210. SwapBuffers(kontekst);
  211.  
  212. EndPaint(okno, &paint);
  213.  
  214. return 0;
  215. }
  216.  
  217. case WM_TIMER:
  218. InvalidateRect(okno, NULL, FALSE);
  219. g_counter += 0.5;
  220. if (g_counter > 359)
  221. g_counter = 0;
  222.  
  223. return 0;
  224.  
  225. case WM_SIZE:
  226. {
  227. int cx = LOWORD(lParam);
  228. int cy = HIWORD(lParam);
  229.  
  230. GLsizei width, height;
  231. GLdouble aspect;
  232. width = cx;
  233. height = cy;
  234.  
  235. if (cy==0)
  236. aspect = (GLdouble)width;
  237. else
  238. aspect = (GLdouble)width/(GLdouble)height;
  239.  
  240. glViewport(0, 0, width, height);
  241.  
  242. glMatrixMode(GL_PROJECTION);
  243. glLoadIdentity();
  244. gluPerspective(55, aspect, 1, 50.0);
  245.  
  246. glMatrixMode(GL_MODELVIEW);
  247. glLoadIdentity();
  248.  
  249. glDrawBuffer(GL_BACK);
  250.  
  251. glEnable(GL_LIGHTING);
  252.  
  253. glEnable(GL_DEPTH_TEST);
  254.  
  255. return 0;
  256. }
  257.  
  258. case WM_DESTROY: //obowiązkowa obsługa meldunku o zamknięciu okna
  259. if(wglGetCurrentContext()!=NULL)
  260. {
  261. // dezaktualizacja kontekstu renderującego
  262. wglMakeCurrent(NULL, NULL) ;
  263. }
  264. if (g_hGLContext!=NULL)
  265. {
  266. wglDeleteContext(g_hGLContext);
  267. g_hGLContext = NULL;
  268. }
  269.  
  270. ReleaseDC(okno, g_context);
  271. KillTimer(okno, 1);
  272.  
  273. PostQuitMessage (0) ;
  274. return 0;
  275.  
  276. default: //standardowa obsługa pozostałych meldunków
  277. return DefWindowProc(okno, kod_meldunku, wParam, lParam);
  278. }
  279. }
  280.  
  281. BOOL SetWindowPixelFormat(HDC hDC)
  282. {
  283. PIXELFORMATDESCRIPTOR pixelDesc;
  284.  
  285. pixelDesc.nSize = sizeof(PIXELFORMATDESCRIPTOR);
  286. pixelDesc.nVersion = 1;
  287. pixelDesc.dwFlags = PFD_DRAW_TO_WINDOW |PFD_SUPPORT_OPENGL |PFD_DOUBLEBUFFER |PFD_STEREO_DONTCARE;
  288. pixelDesc.iPixelType = PFD_TYPE_RGBA;
  289. pixelDesc.cColorBits = 32;
  290. pixelDesc.cRedBits = 8;
  291. pixelDesc.cRedShift = 16;
  292. pixelDesc.cGreenBits = 8;
  293. pixelDesc.cGreenShift = 8;
  294. pixelDesc.cBlueBits = 8;
  295. pixelDesc.cBlueShift = 0;
  296. pixelDesc.cAlphaBits = 0;
  297. pixelDesc.cAlphaShift = 0;
  298. pixelDesc.cAccumBits = 64;
  299. pixelDesc.cAccumRedBits = 16;
  300. pixelDesc.cAccumGreenBits = 16;
  301. pixelDesc.cAccumBlueBits = 16;
  302. pixelDesc.cAccumAlphaBits = 0;
  303. pixelDesc.cDepthBits = 32;
  304. pixelDesc.cStencilBits = 8;
  305. pixelDesc.cAuxBuffers = 0;
  306. pixelDesc.iLayerType = PFD_MAIN_PLANE;
  307. pixelDesc.bReserved = 0;
  308. pixelDesc.dwLayerMask = 0;
  309. pixelDesc.dwVisibleMask = 0;
  310. pixelDesc.dwDamageMask = 0;
  311. g_GLPixelIndex = ChoosePixelFormat( hDC, &pixelDesc);
  312.  
  313. if (g_GLPixelIndex==0)
  314. {
  315. g_GLPixelIndex = 1;
  316.  
  317. if (DescribePixelFormat(hDC, g_GLPixelIndex, sizeof(PIXELFORMATDESCRIPTOR), &pixelDesc)==0)
  318. {
  319. return FALSE;
  320. }
  321. }
  322.  
  323. if (SetPixelFormat( hDC, g_GLPixelIndex, &pixelDesc)==FALSE)
  324. {
  325. return FALSE;
  326. }
  327.  
  328. return TRUE;
  329. }
  330. BOOL CreateViewGLContext(HDC hDC)
  331. {
  332. g_hGLContext = wglCreateContext(hDC);
  333.  
  334. if (g_hGLContext == NULL)
  335. {
  336. return FALSE;
  337. }
  338.  
  339. if (wglMakeCurrent(hDC, g_hGLContext)==FALSE)
  340. {
  341. return FALSE;
  342. }
  343.  
  344. return TRUE;
  345. }
  346.  
  347. void RenderScene()
  348. {
  349. GLfloat BlueSurface[] = { 0.0f, 0.0f, 0.4f, 1.0f};
  350. GLfloat GreySurface[] = { 0.7f, 0.7f, 0.7f, 1.0f};
  351.  
  352. GLfloat LightAmbient[] = { 0.1f, 0.1f, 0.1f, 0.1f };
  353. GLfloat LightDiffuse[] = { 0.8f, 0.8f, 0.8f, 0.8f };
  354. GLfloat LightPosition[] = { 0.0f, 1.0f, 1.0f, 0.0f };
  355.  
  356. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  357.  
  358. glLightfv(GL_LIGHT0, GL_AMBIENT, LightAmbient); //1 składowa: światło otaczające (bezkierunkowe)
  359. glLightfv(GL_LIGHT0, GL_DIFFUSE, LightDiffuse); //2 składowa: światło rozproszone (kierunkowe)
  360. glLightfv(GL_LIGHT0, GL_POSITION, LightPosition);
  361. glEnable(GL_LIGHT0);
  362.  
  363. glPushMatrix();
  364.  
  365. gluLookAt(0, 6, 19 , 0, 0, 0 , 0, 1, 0);
  366.  
  367. glRotated(g_counter, 0, 1, 0);
  368.  
  369. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, GreySurface );
  370.  
  371. //SCIANA PRZEDNIA
  372. glCallList(Wall1a);
  373. glCallList(Wall1b);
  374. glCallList(Wall1c);
  375. glCallList(Wall1d);
  376. glCallList(Wall1e);
  377. glCallList(Wall1f);
  378. glCallList(Wall1g);
  379. glCallList(Wall1h);
  380. glCallList(Wall1i);
  381. glCallList(Wall1j);
  382. glCallList(Wall1k);
  383. glCallList(Wall1l);
  384. glCallList(Wall1m);
  385. glCallList(Wall1n);
  386. glCallList(Wall1o);
  387. glCallList(Wall1p);
  388. glCallList(Wall1r);
  389. glCallList(Wall1s);
  390.  
  391. //TYLNA ŚCIANA
  392. glCallList(Wall2a);
  393. glCallList(Wall2b);
  394. glCallList(Wall2c);
  395. glCallList(Wall2d);
  396. glCallList(Wall2e);
  397. glCallList(Wall2f);
  398. glCallList(Wall2g);
  399. glCallList(Wall2h);
  400. glCallList(Wall2i);
  401. glCallList(Wall2j);
  402. glCallList(Wall2k);
  403. glCallList(Wall2l);
  404. glCallList(Wall2m);
  405. glCallList(Wall2n);
  406. glCallList(Wall2o);
  407. glCallList(Wall2p);
  408. glCallList(Wall2r);
  409. glCallList(Wall2s);
  410.  
  411. //ŚCIANY BOCZNE
  412. glCallList(Wall3a);
  413. glCallList(Wall3b);
  414.  
  415. glCallList(Wall4a);
  416. glCallList(Wall4b);
  417.  
  418. glCallList(Wall5a);
  419. glCallList(Wall5b);
  420.  
  421. glCallList(Wall6a);
  422. glCallList(Wall6b);
  423. glCallList(Wall6c);
  424. glCallList(Wall6d);
  425. glCallList(Wall6e);
  426. glCallList(Wall6f);
  427. glCallList(Wall6g);
  428. glCallList(Wall6h);
  429. glCallList(Wall6i);
  430. glCallList(Wall6j);
  431. glCallList(Wall6k);
  432. glCallList(Wall6l);
  433.  
  434.  
  435.  
  436. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, BlueSurface);
  437.  
  438. glRotated(30, 0, 1, 0);
  439. glTranslated(1, 1, 3);
  440.  
  441. //SCIANA PRZEDNIA
  442. glCallList(Wall1a);
  443. glCallList(Wall1b);
  444. glCallList(Wall1c);
  445. glCallList(Wall1d);
  446. glCallList(Wall1e);
  447. glCallList(Wall1f);
  448. glCallList(Wall1g);
  449. glCallList(Wall1h);
  450. glCallList(Wall1i);
  451. glCallList(Wall1j);
  452. glCallList(Wall1k);
  453. glCallList(Wall1l);
  454. glCallList(Wall1m);
  455. glCallList(Wall1n);
  456. glCallList(Wall1o);
  457. glCallList(Wall1p);
  458. glCallList(Wall1r);
  459. glCallList(Wall1s);
  460.  
  461. //TYLNA ŚCIANA
  462. glCallList(Wall2a);
  463. glCallList(Wall2b);
  464. glCallList(Wall2c);
  465. glCallList(Wall2d);
  466. glCallList(Wall2e);
  467. glCallList(Wall2f);
  468. glCallList(Wall2g);
  469. glCallList(Wall2h);
  470. glCallList(Wall2i);
  471. glCallList(Wall2j);
  472. glCallList(Wall2k);
  473. glCallList(Wall2l);
  474. glCallList(Wall2m);
  475. glCallList(Wall2n);
  476. glCallList(Wall2o);
  477. glCallList(Wall2p);
  478. glCallList(Wall2r);
  479. glCallList(Wall2s);
  480.  
  481. //ŚCIANY BOCZNE
  482. glCallList(Wall3a);
  483. glCallList(Wall3b);
  484.  
  485. glCallList(Wall4a);
  486. glCallList(Wall4b);
  487.  
  488. glCallList(Wall5a);
  489. glCallList(Wall5b);
  490.  
  491. glCallList(Wall6a);
  492. glCallList(Wall6b);
  493. glCallList(Wall6c);
  494. glCallList(Wall6d);
  495. glCallList(Wall6e);
  496. glCallList(Wall6f);
  497. glCallList(Wall6g);
  498. glCallList(Wall6h);
  499. glCallList(Wall6i);
  500. glCallList(Wall6j);
  501. glCallList(Wall6k);
  502. glCallList(Wall6l);
  503.  
  504. //glCallList(Floor);
  505.  
  506.  
  507. glPopMatrix();
  508.  
  509.  
  510. glFlush();
  511.  
  512. }
  513.  
  514. void CreateMaze()
  515. {
  516. //PRZEDNIA SCIANA
  517.  
  518. glNewList(Wall1a,GL_COMPILE); // GL_COMPILE - lista jest kompilowana, ale nie wykonywana
  519. glBegin(GL_TRIANGLES ); // inne opcje: GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP
  520. // GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_QUAD_STRIP, GL_POLYGON
  521. glNormal3d( 0.0, 0.0, 1.0);
  522. glVertex3d( 0.0, 0.0, 0.0);
  523. glVertex3d( 1.0, 0.0, 0.0);
  524. glVertex3d( 1.0, 6.0, 0.0);
  525. glEnd();
  526. glEndList();
  527.  
  528. glNewList(Wall1b,GL_COMPILE);
  529. glBegin(GL_TRIANGLES);
  530. glNormal3d( 0.0, 0.0, 1.0);
  531. glVertex3d( 0.0, 0.0, 0.0);
  532. glVertex3d( 0.0, 6.0, 0.0);
  533. glVertex3d( 1.0, 6.0, 0.0);
  534. glEnd();
  535. glEndList();
  536.  
  537. glNewList(Wall1c, GL_COMPILE);
  538. glBegin(GL_TRIANGLES);
  539. glNormal3d(0.0, 0.0, 1.0);
  540. glVertex3d(1.0, 6.0, 0.0);
  541. glVertex3d(3.0, 6.0, 0.0);
  542. glVertex3d(3.0, 5.0, 0.0);
  543. glEnd();
  544. glEndList();
  545.  
  546. glNewList(Wall1d, GL_COMPILE);
  547. glBegin(GL_TRIANGLES);
  548. glNormal3d(0.0, 0.0, 1.0);
  549. glVertex3d(1.0, 6.0, 0.0);
  550. glVertex3d(3.0, 5.0, 0.0);
  551. glVertex3d(1.0, 5.0, 0.0);
  552. glEnd();
  553. glEndList();
  554.  
  555. glNewList(Wall1e, GL_COMPILE);
  556. glBegin(GL_TRIANGLES);
  557. glNormal3d(0.0, 0.0, 1.0);
  558. glVertex3d(3.0, 6.0, 0.0);
  559. glVertex3d(4.0, 5.0, 0.0);
  560. glVertex3d(3.0, 5.0, 0.0);
  561. glEnd();
  562. glEndList();
  563.  
  564. glNewList(Wall1f, GL_COMPILE);
  565. glBegin(GL_TRIANGLES);
  566. glNormal3d(0.0, 0.0, 1.0);
  567. glVertex3d(4.0, 5.0, 0.0);
  568. glVertex3d(2.5f, 5.0, 0.0);
  569. glVertex3d(2.5f, 4.0, 0.0);
  570. glEnd();
  571. glEndList();
  572.  
  573. glNewList(Wall1g, GL_COMPILE);
  574. glBegin(GL_TRIANGLES);
  575. glNormal3d(0.0, 0.0, 1.0);
  576. glVertex3d(2.5f, 4.0, 0.0);
  577. glVertex3d(4.0, 4.0, 0.0);
  578. glVertex3d(4.0, 5.0, 0.0);
  579. glEnd();
  580. glEndList();
  581.  
  582. glNewList(Wall1h, GL_COMPILE);
  583. glBegin(GL_TRIANGLES);
  584. glNormal3d(0.0, 0.0, 1.0);
  585. glVertex3d(4.0, 4.0, 0.0);
  586. glVertex3d(3.0, 4.0, 0.0);
  587. glVertex3d(3.0, 3.0, 0.0);
  588. glEnd();
  589. glEndList();
  590.  
  591. glNewList(Wall1i, GL_COMPILE);
  592. glBegin(GL_TRIANGLES);
  593. glNormal3d(0.0, 0.0, 1.0);
  594. glVertex3d(3.0, 4.0, 0.0);
  595. glVertex3d(1.0, 4.0, 0.0);
  596. glVertex3d(1.0, 3.0, 0.0);
  597. glEnd();
  598. glEndList();
  599.  
  600. glNewList(Wall1j, GL_COMPILE);
  601. glBegin(GL_TRIANGLES);
  602. glNormal3d(0.0, 0.0, 1.0);
  603. glVertex3d(1.0, 3.0, 0.0);
  604. glVertex3d(3.0, 3.0, 0.0);
  605. glVertex3d(3.0, 4.0, 0.0);
  606. glEnd();
  607. glEndList();
  608.  
  609. glNewList(Wall1k, GL_COMPILE);
  610. glBegin(GL_TRIANGLES);
  611. glNormal3d(0.0, 0.0, 1.0);
  612. glVertex3d(3.0, 3.0, 0.0);
  613. glVertex3d(1.0, 3.0, 0.0);
  614. glVertex3d(1.0, 2.0, 0.0);
  615. glEnd();
  616. glEndList();
  617.  
  618. glNewList(Wall1l, GL_COMPILE);
  619. glBegin(GL_TRIANGLES);
  620. glNormal3d(0.0, 0.0, 1.0);
  621. glVertex3d(1.0, 2.0, 0.0);
  622. glVertex3d(3.0, 2.0, 0.0);
  623. glVertex3d(3.0, 3.0, 0.0);
  624. glEnd();
  625. glEndList();
  626.  
  627. glNewList(Wall1m, GL_COMPILE);
  628. glBegin(GL_TRIANGLES);
  629. glNormal3d(0.0, 0.0, 1.0);
  630. glVertex3d(4.0, 2.0, 0.0);
  631. glVertex3d(3.0, 3.0, 0.0);
  632. glVertex3d(3.0, 2.0, 0.0);
  633. glEnd();
  634. glEndList();
  635.  
  636. glNewList(Wall1n, GL_COMPILE);
  637. glBegin(GL_TRIANGLES);
  638. glNormal3d(0.0, 0.0, 1.0);
  639. glVertex3d(4.0, 2.0, 0.0);
  640. glVertex3d(4.0, 1.0, 0.0);
  641. glVertex3d(2.5f, 2.0, 0.0);
  642. glEnd();
  643. glEndList();
  644.  
  645. glNewList(Wall1o, GL_COMPILE);
  646. glBegin(GL_TRIANGLES);
  647. glNormal3d(0.0, 0.0, 1.0);
  648. glVertex3d(4.0, 1.0, 0.0);
  649. glVertex3d(2.5f, 2.0, 0.0);
  650. glVertex3d(2.5f, 1.0, 0.0);
  651. glEnd();
  652. glEndList();
  653.  
  654. glNewList(Wall1p, GL_COMPILE);
  655. glBegin(GL_TRIANGLES);
  656. glNormal3d(0.0, 0.0, 1.0);
  657. glVertex3d(4.0, 1.0, 0.0);
  658. glVertex3d(3.0, 0.0, 0.0);
  659. glVertex3d(3.0, 1.0, 0.0);
  660. glEnd();
  661. glEndList();
  662.  
  663. glNewList(Wall1r, GL_COMPILE);
  664. glBegin(GL_TRIANGLES);
  665. glNormal3d(0.0, 0.0, 1.0);
  666. glVertex3d(1.0, 0.0, 0.0);
  667. glVertex3d(3.0, 0.0, 0.0);
  668. glVertex3d(1.0, 1.0, 0.0);
  669. glEnd();
  670. glEndList();
  671.  
  672. glNewList(Wall1s, GL_COMPILE);
  673. glBegin(GL_TRIANGLES);
  674. glNormal3d(0.0, 0.0, 1.0);
  675. glVertex3d(3.0, 0.0, 0.0);
  676. glVertex3d(3.0, 1.0, 0.0);
  677. glVertex3d(1.0, 1.0, 0.0);
  678. glEnd();
  679. glEndList();
  680.  
  681. //TYLNA ŚCIANA
  682.  
  683. glNewList(Wall2a, GL_COMPILE);
  684. glBegin(GL_TRIANGLES);
  685. glNormal3d(0.0, 0.0, -1.0);
  686. glVertex3d(0.0, 0.0, -1.0);
  687. glVertex3d(1.0, 0.0, -1.0);
  688. glVertex3d(1.0, 6.0, -1.0);
  689. glEnd();
  690. glEndList();
  691.  
  692. glNewList(Wall2b, GL_COMPILE);
  693. glBegin(GL_TRIANGLES);
  694. glNormal3d(0.0, 0.0, -1.0);
  695. glVertex3d(0.0, 0.0, -1.0);
  696. glVertex3d(0.0, 6.0, -1.0);
  697. glVertex3d(1.0, 6.0, -1.0);
  698. glEnd();
  699. glEndList();
  700.  
  701. glNewList(Wall2c, GL_COMPILE);
  702. glBegin(GL_TRIANGLES);
  703. glNormal3d(0.0, 0.0, -1.0);
  704. glVertex3d(1.0, 6.0, -1.0);
  705. glVertex3d(3.0, 6.0, -1.0);
  706. glVertex3d(3.0, 5.0, -1.0);
  707. glEnd();
  708. glEndList();
  709.  
  710. glNewList(Wall2d, GL_COMPILE);
  711. glBegin(GL_TRIANGLES);
  712. glNormal3d(0.0, 0.0, -1.0);
  713. glVertex3d(1.0, 6.0, -1.0);
  714. glVertex3d(3.0, 5.0, -1.0);
  715. glVertex3d(1.0, 5.0, -1.0);
  716. glEnd();
  717. glEndList();
  718.  
  719. glNewList(Wall2e, GL_COMPILE);
  720. glBegin(GL_TRIANGLES);
  721. glNormal3d(0.0, 0.0, -1.0);
  722. glVertex3d(3.0, 6.0, -1.0);
  723. glVertex3d(4.0, 5.0, -1.0);
  724. glVertex3d(3.0, 5.0, -1.0);
  725. glEnd();
  726. glEndList();
  727.  
  728. glNewList(Wall2f, GL_COMPILE);
  729. glBegin(GL_TRIANGLES);
  730. glNormal3d(0.0, 0.0, -1.0);
  731. glVertex3d(4.0, 5.0, -1.0);
  732. glVertex3d(2.5f, 5.0, -1.0);
  733. glVertex3d(2.5f, 4.0, -1.0);
  734. glEnd();
  735. glEndList();
  736.  
  737. glNewList(Wall2g, GL_COMPILE);
  738. glBegin(GL_TRIANGLES);
  739. glNormal3d(0.0, 0.0, -1.0);
  740. glVertex3d(2.5f, 4.0, -1.0);
  741. glVertex3d(4.0, 4.0, -1.0);
  742. glVertex3d(4.0, 5.0, -1.0);
  743. glEnd();
  744. glEndList();
  745.  
  746. glNewList(Wall2h, GL_COMPILE);
  747. glBegin(GL_TRIANGLES);
  748. glNormal3d(0.0, 0.0, -1.0);
  749. glVertex3d(4.0, 4.0, -1.0);
  750. glVertex3d(3.0, 4.0, -1.0);
  751. glVertex3d(3.0, 3.0, -1.0);
  752. glEnd();
  753. glEndList();
  754.  
  755. glNewList(Wall2i, GL_COMPILE);
  756. glBegin(GL_TRIANGLES);
  757. glNormal3d(0.0, 0.0, -1.0);
  758. glVertex3d(3.0, 4.0, -1.0);
  759. glVertex3d(1.0, 4.0, -1.0);
  760. glVertex3d(1.0, 3.0, -1.0);
  761. glEnd();
  762. glEndList();
  763.  
  764. glNewList(Wall2j, GL_COMPILE);
  765. glBegin(GL_TRIANGLES);
  766. glNormal3d(0.0, 0.0, -1.0);
  767. glVertex3d(1.0, 3.0, -1.0);
  768. glVertex3d(3.0, 3.0, -1.0);
  769. glVertex3d(3.0, 4.0, -1.0);
  770. glEnd();
  771. glEndList();
  772.  
  773. glNewList(Wall2k, GL_COMPILE);
  774. glBegin(GL_TRIANGLES);
  775. glNormal3d(0.0, 0.0, -1.0);
  776. glVertex3d(3.0, 3.0, -1.0);
  777. glVertex3d(1.0, 3.0, -1.0);
  778. glVertex3d(1.0, 2.0, -1.0);
  779. glEnd();
  780. glEndList();
  781.  
  782. glNewList(Wall2l, GL_COMPILE);
  783. glBegin(GL_TRIANGLES);
  784. glNormal3d(0.0, 0.0, -1.0);
  785. glVertex3d(1.0, 2.0, -1.0);
  786. glVertex3d(3.0, 2.0, -1.0);
  787. glVertex3d(3.0, 3.0, -1.0);
  788. glEnd();
  789. glEndList();
  790.  
  791. glNewList(Wall2m, GL_COMPILE);
  792. glBegin(GL_TRIANGLES);
  793. glNormal3d(0.0, 0.0, -1.0);
  794. glVertex3d(4.0, 2.0, -1.0);
  795. glVertex3d(3.0, 3.0, -1.0);
  796. glVertex3d(3.0, 2.0, -1.0);
  797. glEnd();
  798. glEndList();
  799.  
  800. glNewList(Wall2n, GL_COMPILE);
  801. glBegin(GL_TRIANGLES);
  802. glNormal3d(0.0, 0.0, -1.0);
  803. glVertex3d(4.0, 2.0, -1.0);
  804. glVertex3d(4.0, 1.0, -1.0);
  805. glVertex3d(2.5f, 2.0, -1.0);
  806. glEnd();
  807. glEndList();
  808.  
  809. glNewList(Wall2o, GL_COMPILE);
  810. glBegin(GL_TRIANGLES);
  811. glNormal3d(0.0, 0.0, -1.0);
  812. glVertex3d(4.0, 1.0, -1.0);
  813. glVertex3d(2.5f, 2.0, -1.0);
  814. glVertex3d(2.5f, 1.0, -1.0);
  815. glEnd();
  816. glEndList();
  817.  
  818. glNewList(Wall2p, GL_COMPILE);
  819. glBegin(GL_TRIANGLES);
  820. glNormal3d(0.0, 0.0, -1.0);
  821. glVertex3d(4.0, 1.0, -1.0);
  822. glVertex3d(3.0, 0.0, -1.0);
  823. glVertex3d(3.0, 1.0, -1.0);
  824. glEnd();
  825. glEndList();
  826.  
  827. glNewList(Wall2r, GL_COMPILE);
  828. glBegin(GL_TRIANGLES);
  829. glNormal3d(0.0, 0.0, -1.0);
  830. glVertex3d(1.0, 0.0, -1.0);
  831. glVertex3d(3.0, 0.0, -1.0);
  832. glVertex3d(1.0, 1.0, -1.0);
  833. glEnd();
  834. glEndList();
  835.  
  836. glNewList(Wall2s, GL_COMPILE);
  837. glBegin(GL_TRIANGLES);
  838. glNormal3d(0.0, 0.0, -1.0);
  839. glVertex3d(3.0, 0.0, -1.0);
  840. glVertex3d(3.0, 1.0, -1.0);
  841. glVertex3d(1.0, 1.0, -1.0);
  842. glEnd();
  843. glEndList();
  844.  
  845. //ŚCIANY BOCZNE
  846. glNewList(Wall3a, GL_COMPILE);
  847. glBegin(GL_TRIANGLES);
  848. glNormal3d(-1.0, 0.0, 0.0);
  849. glVertex3d(0.0, 6.0, -1.0);
  850. glVertex3d(0.0, 0.0, 0.0);
  851. glVertex3d(0.0, 0.0, -1.0);
  852. glEnd();
  853. glEndList();
  854.  
  855. glNewList(Wall3b, GL_COMPILE);
  856. glBegin(GL_TRIANGLES);
  857. glNormal3d(-1.0, 0.0, 0.0);
  858. glVertex3d(0.0, 6.0, -1.0);
  859. glVertex3d(0.0, 0.0, 0.0);
  860. glVertex3d(0.0, 6.0, 0.0);
  861. glEnd();
  862. glEndList();
  863.  
  864. glNewList(Wall4a, GL_COMPILE);
  865. glBegin(GL_TRIANGLES);
  866. glNormal3d(0.0, -1.0, 0.0);
  867. glVertex3d(0.0, 6.0, -1.0);
  868. glVertex3d(3.0, 6.0, 0.0);
  869. glVertex3d(0.0, 6.0, 0.0);
  870. glEnd();
  871. glEndList();
  872.  
  873. glNewList(Wall4b, GL_COMPILE);
  874. glBegin(GL_TRIANGLES);
  875. glNormal3d(0.0, -1.0, 0.0);
  876. glVertex3d(3.0, 6.0, 0.0);
  877. glVertex3d(3.0, 6.0, -1.0);
  878. glVertex3d(0.0, 6.0, -1.0);
  879. glEnd();
  880. glEndList();
  881.  
  882. glNewList(Wall5a, GL_COMPILE);
  883. glBegin(GL_TRIANGLES);
  884. glNormal3d(0.0, 1.0, 0.0);
  885. glVertex3d(0.0, 0.0, -1.0);
  886. glVertex3d(0.0, 0.0, 0.0);
  887. glVertex3d(3.0, 0.0, -1.0);
  888. glEnd();
  889. glEndList();
  890.  
  891. glNewList(Wall5b, GL_COMPILE);
  892. glBegin(GL_TRIANGLES);
  893. glNormal3d(0.0, 1.0, 0.0);
  894. glVertex3d(0.0, 0.0, 0.0);
  895. glVertex3d(3.0, 0.0, 0.0);
  896. glVertex3d(3.0, 0.0, -1.0);
  897. glEnd();
  898. glEndList();
  899.  
  900. glNewList(Wall6a, GL_COMPILE);
  901. glBegin(GL_TRIANGLES);
  902. glNormal3d(1.0, 1.0, 0.0);
  903. glVertex3d(3.0, 6.0, 0.0);
  904. glVertex3d(4.0, 5.0, 0.0);
  905. glVertex3d(4.0, 5.0, -1.0);
  906. glEnd();
  907. glEndList();
  908.  
  909. glNewList(Wall6b, GL_COMPILE);
  910. glBegin(GL_TRIANGLES);
  911. glNormal3d(1.0, 1.0, 0.0);
  912. glVertex3d(3.0, 6.0, 0.0);
  913. glVertex3d(3.0, 6.0, -1.0);
  914. glVertex3d(4.0, 5.0, -1.0);
  915. glEnd();
  916. glEndList();
  917.  
  918. glNewList(Wall6c, GL_COMPILE);
  919. glBegin(GL_TRIANGLES);
  920. glNormal3d(1.0, 0.0, 0.0);
  921. glVertex3d(4.0, 5.0, 0.0);
  922. glVertex3d(4.0, 4.0, 0.0);
  923. glVertex3d(4.0, 5.0, -1.0);
  924. glEnd();
  925. glEndList();
  926.  
  927. glNewList(Wall6d, GL_COMPILE);
  928. glBegin(GL_TRIANGLES);
  929. glNormal3d(1.0, 0.0, 0.0);
  930. glVertex3d(4.0, 4.0, 0.0);
  931. glVertex3d(4.0, 4.0, -1.0);
  932. glVertex3d(4.0, 5.0, -1.0);
  933. glEnd();
  934. glEndList();
  935.  
  936. glNewList(Wall6e, GL_COMPILE);
  937. glBegin(GL_TRIANGLES);
  938. glNormal3d(1.0, -1.0, 0.0);
  939. glVertex3d(4.0, 4.0, 0.0);
  940. glVertex3d(3.0, 4.0, 0.0);
  941. glVertex3d(4.0, 4.0, -1.0);
  942. glEnd();
  943. glEndList();
  944.  
  945. glNewList(Wall6f, GL_COMPILE);
  946. glBegin(GL_TRIANGLES);
  947. glNormal3d(1.0, -1.0, 0.0);
  948. glVertex3d(3.0, 4.0, -1.0);
  949. glVertex3d(3.0, 4.0, 0.0);
  950. glVertex3d(4.0, 4.0, -1.0);
  951. glEnd();
  952. glEndList();
  953.  
  954. glNewList(Wall6g, GL_COMPILE);
  955. glBegin(GL_TRIANGLES);
  956. glNormal3d(1.0, 1.0, 0.0);
  957. glVertex3d(4.0, 2.0, 0.0);
  958. glVertex3d(3.0, 3.0, 0.0);
  959. glVertex3d(3.0, 3.0, -1.0);
  960. glEnd();
  961. glEndList();
  962.  
  963. glNewList(Wall6h, GL_COMPILE);
  964. glBegin(GL_TRIANGLES);
  965. glNormal3d(1.0, 1.0, 0.0);
  966. glVertex3d(4.0, 2.0, -1.0);
  967. glVertex3d(4.0, 2.0, 0.0);
  968. glVertex3d(3.0, 3.0, -1.0);
  969. glEnd();
  970. glEndList();
  971.  
  972. glNewList(Wall6i, GL_COMPILE);
  973. glBegin(GL_TRIANGLES);
  974. glNormal3d(1.0, 0.0, 0.0);
  975. glVertex3d(4.0, 2.0, 0.0);
  976. glVertex3d(4.0, 1.0, 0.0);
  977. glVertex3d(4.0, 1.0, -1.0);
  978. glEnd();
  979. glEndList();
  980.  
  981. glNewList(Wall6j, GL_COMPILE);
  982. glBegin(GL_TRIANGLES);
  983. glNormal3d(1.0, 0.0, 0.0);
  984. glVertex3d(4.0, 2.0, 0.0);
  985. glVertex3d(4.0, 2.0, -1.0);
  986. glVertex3d(4.0, 1.0, -1.0);
  987. glEnd();
  988. glEndList();
  989.  
  990. glNewList(Wall6k, GL_COMPILE);
  991. glBegin(GL_TRIANGLES);
  992. glNormal3d(1.0, -1.0, 0.0);
  993. glVertex3d(3.0, 0.0, 0.0);
  994. glVertex3d(4.0, 1.0, 0.0);
  995. glVertex3d(3.0, 0.0, -1.0);
  996. glEnd();
  997. glEndList();
  998.  
  999. glNewList(Wall6l, GL_COMPILE);
  1000. glBegin(GL_TRIANGLES);
  1001. glNormal3d(1.0, -1.0, 0.0);
  1002. glVertex3d(3.0, 0.0, -1.0);
  1003. glVertex3d(4.0, 1.0, -1.0);
  1004. glVertex3d(4.0, 1.0, 0.0);
  1005. glEnd();
  1006. glEndList();
  1007.  
  1008.  
  1009.  
  1010. glNewList(Floor,GL_COMPILE);
  1011. glBegin(GL_POLYGON);
  1012. glNormal3d( 0.0, 1.0, 0.0);
  1013. glVertex3d( -20, -1, -30.0);
  1014. glVertex3d( -20, -1, 10.0);
  1015. glVertex3d( 20, -1, 10.0);
  1016. glVertex3d( 20, -1, -30.0);
  1017. glEnd();
  1018. glEndList();
  1019.  
  1020. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement