Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

969 lines
13 KiB

  1. #include <windows.h>
  2. #include <stdio.h>
  3. #include <math.h>
  4. #include <GL/gl.h>
  5. #include <GL/glu.h>
  6. #include "gl42ogl.h"
  7. #include "tk.h"
  8. #include "insect.h"
  9. #include "insectco.h"
  10. #define BLACK 0
  11. /* For ECLIPSE 8 bit machine */
  12. extern GLboolean is_8bit;
  13. GLuint screen,viewit,shadow,body,hip[6],thigh[6],shin[6],kneeball[6];
  14. GLuint body_shadow,hip_shadow,thigh_shadow,shin_shadow,kneeball_shadow;
  15. GLfloat k2[6][3];
  16. GLfloat k3[6][3];
  17. GLfloat b7[12][3];
  18. GLfloat b8[12][3];
  19. GLint scr[4][2];
  20. GLfloat b1[4][3] = {
  21. {
  22. R1 * SIN30 * -SIN15,
  23. R1 * SIN30 * COS15,
  24. R1 * COS30
  25. },
  26. {
  27. R1 * SIN30 * SIN15,
  28. R1 * SIN30 * COS15,
  29. R1 * COS30
  30. },
  31. {
  32. A2 * SIN30,
  33. A1,
  34. A2 * COS30
  35. },
  36. {
  37. -A2 * SIN30,
  38. A1,
  39. A2 * COS30
  40. }
  41. };
  42. GLfloat b4[4][3] = {
  43. {
  44. R1 * SIN30 * -SIN15,
  45. R1 * SIN30 * COS15,
  46. -R1 * COS30
  47. },
  48. {
  49. -A2 * SIN30,
  50. A1,
  51. -A2 * COS30
  52. },
  53. {
  54. A2 * SIN30,
  55. A1,
  56. -A2 * COS30
  57. },
  58. {
  59. R1 * SIN30 * SIN15,
  60. R1 * SIN30 * COS15,
  61. -R1 * COS30
  62. }
  63. };
  64. GLfloat b2[4][3] = {{
  65. R1 * SIN30 * -SIN45,
  66. R1 * SIN30 * COS45,
  67. R1 * COS30
  68. },
  69. {
  70. R1 * SIN30 * -SIN15,
  71. R1 * SIN30 * COS15,
  72. R1 * COS30
  73. },
  74. {
  75. -A2 * SIN30,
  76. A1,
  77. A2 * COS30
  78. },
  79. {
  80. (A2 * SIN30) * COS60 - A1 * SIN60,
  81. A1 * COS60 + (A2 * SIN30) * SIN60,
  82. A2 * COS30
  83. }
  84. };
  85. GLfloat b5[4][3] = {{
  86. R1 * SIN30 * -SIN45,
  87. R1 * SIN30 * COS45,
  88. -R1 * COS30
  89. },
  90. {
  91. (A2 * SIN30) * COS60 - A1 * SIN60,
  92. A1 * COS60 + (A2 * SIN30) * SIN60,
  93. -A2 * COS30
  94. },
  95. {
  96. -A2 * SIN30,
  97. A1,
  98. -A2 * COS30
  99. },
  100. {
  101. R1 * SIN30 * -SIN15,
  102. R1 * SIN30 * COS15,
  103. -R1 * COS30
  104. }
  105. };
  106. GLfloat b3[4][3] = {{
  107. (A2 * SIN30) * COS60 - A1 * SIN60,
  108. A1 * COS60 + (A2 * SIN30) * SIN60,
  109. A2 * COS30
  110. },
  111. {
  112. -A2 * SIN30,
  113. A1,
  114. A2 * COS30
  115. },
  116. {
  117. -A2,
  118. A1,
  119. 0
  120. },
  121. {
  122. (A2) * COS60 - A1 * SIN60,
  123. A1 * COS60 + (A2) * SIN60,
  124. 0
  125. }
  126. };
  127. GLfloat b6[4][3] = {{
  128. (A2 * SIN30) * COS60 - A1 * SIN60,
  129. A1 * COS60 + (A2 * SIN30) * SIN60,
  130. -A2 * COS30
  131. },
  132. {
  133. (A2) * COS60 - A1 * SIN60,
  134. A1 * COS60 + (A2) * SIN60,
  135. 0.0
  136. },
  137. {
  138. -A2,
  139. A1,
  140. 0.0
  141. },
  142. {
  143. -A2 * SIN30,
  144. A1,
  145. -A2 * COS30
  146. }
  147. };
  148. GLfloat h1[4][3] = {{
  149. A2, -A2, 0.0
  150. },
  151. {
  152. R2, 0.0, 0.0
  153. },
  154. {
  155. R2 * COS60,
  156. 0,
  157. R2 * SIN60
  158. },
  159. {
  160. A2 * COS60,
  161. -A2,
  162. A2 * SIN60
  163. }
  164. };
  165. GLfloat h2[4][3] = {{
  166. R2 * COS60,
  167. 0.0,
  168. R2 * SIN60
  169. },
  170. {
  171. R2, 0.0, 0.0
  172. },
  173. {
  174. A2, A2, 0.0
  175. },
  176. {
  177. A2 * COS60,
  178. A2,
  179. A2 * SIN60
  180. }
  181. };
  182. GLfloat h3[3][3] = {{
  183. A2, A2, 0.0
  184. },
  185. {
  186. 0.0, R2, 0.0
  187. },
  188. {
  189. A2 * COS60,
  190. A2,
  191. A2 * SIN60
  192. },
  193. };
  194. GLfloat t1[4][3] = {{
  195. -A2 * COS60,
  196. A2,
  197. A2 * SIN60
  198. },
  199. {
  200. A2 * COS60,
  201. A2,
  202. A2 * SIN60
  203. },
  204. {
  205. A2 * COS60,
  206. 1 - A2 * COS60,
  207. A2 * SIN60
  208. },
  209. {
  210. -A2 * COS60,
  211. 1 - A2 * COS60,
  212. A2 * SIN60
  213. }
  214. };
  215. GLfloat t2[3][3] = {{
  216. -A2 * COS60,
  217. A2,
  218. A2 * SIN60
  219. },
  220. {
  221. -A2 * COS60,
  222. 1 - A2 * COS60,
  223. A2 * SIN60
  224. },
  225. {
  226. -A2,
  227. A2,
  228. 0.0
  229. }
  230. };
  231. GLfloat t6[3][3] = {{
  232. -A2 * COS60,
  233. A2,
  234. -A2 * SIN60
  235. },
  236. {
  237. -A2,
  238. A2,
  239. 0.0
  240. },
  241. {
  242. -A2 * COS60,
  243. 1 - A2,
  244. 0.0
  245. }
  246. };
  247. GLfloat t3[3][3] = {{
  248. A2 * COS60,
  249. A2,
  250. A2 * SIN60
  251. },
  252. {
  253. A2,
  254. A2,
  255. 0.0
  256. },
  257. {
  258. A2 * COS60,
  259. 1 - A2 * COS60,
  260. A2 * SIN60
  261. }
  262. };
  263. GLfloat t7[3][3] = {{
  264. A2 * COS60,
  265. A2,
  266. -A2 * SIN60
  267. },
  268. {
  269. A2 * COS60,
  270. 1 - A2,
  271. 0.0
  272. },
  273. {
  274. A2,
  275. A2,
  276. 0.0
  277. }
  278. };
  279. GLfloat t4[3][3] = {{
  280. -A2 * COS60,
  281. 1.0 - A2 * COS60,
  282. A2 * SIN60
  283. },
  284. {
  285. -A2 * COS60,
  286. 1.0 - A2,
  287. 0.0
  288. },
  289. {
  290. -A2,
  291. A2,
  292. 0.0
  293. }
  294. };
  295. GLfloat t5[3][3] = {{
  296. A2 * COS60,
  297. 1.0 - A2 * COS60,
  298. A2 * SIN60
  299. },
  300. {
  301. A2,
  302. A2,
  303. 0.0
  304. },
  305. {
  306. A2 * COS60,
  307. 1 - A2,
  308. 0.0
  309. }
  310. };
  311. GLfloat t8[4][3] = {{
  312. A2 * COS60,
  313. A2,
  314. -A2 * SIN60
  315. },
  316. {
  317. -A2 * COS60,
  318. A2,
  319. -A2 * SIN60
  320. },
  321. {
  322. -A2 * COS60,
  323. 1 - A2,
  324. 0.0
  325. },
  326. {
  327. A2 * COS60,
  328. 1 - A2,
  329. 0.0
  330. }
  331. };
  332. GLfloat s1[4][3] = {{
  333. A2 * COS60,
  334. -A2 * COS60,
  335. -A2 * SIN60
  336. },
  337. {
  338. A2 * COS60 * 0.4,
  339. A2 * COS60 - 2.0,
  340. -A2 * SIN60 * 0.4
  341. },
  342. {
  343. -A2 * COS60 * 0.4,
  344. A2 * COS60 - 2.0,
  345. -A2 * SIN60 * 0.4
  346. },
  347. {
  348. -A2 * COS60,
  349. -A2 * COS60,
  350. -A2 * SIN60
  351. }
  352. };
  353. GLfloat s2[4][3] = {{
  354. A2 * COS60,
  355. -A2 * COS60,
  356. -A2 * SIN60
  357. },
  358. {
  359. A2 * COS60,
  360. -A2,
  361. 0.0
  362. },
  363. {
  364. A2 * COS60 * 0.4,
  365. -2.0,
  366. 0.0
  367. },
  368. {
  369. A2 * COS60 * 0.4,
  370. A2 * COS60 - 2.0,
  371. -A2 * SIN60 * 0.4
  372. }
  373. };
  374. GLfloat s3[4][3] = {{
  375. -A2 * COS60,
  376. -A2 * COS60,
  377. -A2 * SIN60
  378. },
  379. {
  380. -A2 * COS60 * 0.4,
  381. A2 * COS60 - 2.0,
  382. -A2 * SIN60 * 0.4
  383. },
  384. {
  385. -A2 * COS60 * 0.4,
  386. -2.0,
  387. 0.0
  388. },
  389. {
  390. -A2 * COS60,
  391. -A2,
  392. 0.0
  393. }
  394. };
  395. GLfloat s4[4][3] = {{
  396. A2 * COS60,
  397. -A2,
  398. 0.0
  399. },
  400. {
  401. -A2 * COS60,
  402. -A2,
  403. 0.0
  404. },
  405. {
  406. -A2 * COS60 * 0.4,
  407. -2.0,
  408. 0.0
  409. },
  410. {
  411. A2 * COS60 * 0.4,
  412. -2.0,
  413. 0.0
  414. }
  415. };
  416. GLfloat s5[4][3] = {{
  417. A2 * COS60 * 0.4,
  418. -2.0,
  419. 0.0
  420. },
  421. {
  422. -A2 * COS60 * 0.4,
  423. -2.0,
  424. 0.0
  425. },
  426. {
  427. -A2 * COS60 * 0.4,
  428. A2 * COS60 - 2.0,
  429. -A2 * SIN60 * 0.4
  430. },
  431. {
  432. A2 * COS60 * 0.4,
  433. A2 * COS60 - 2.0,
  434. -A2 * SIN60 * 0.4
  435. }
  436. };
  437. GLfloat k1[4][3] = {{
  438. -A2 * COS60,
  439. 1.0 - A2 * COS60,
  440. A2 * SIN60
  441. },
  442. {
  443. A2 * COS60,
  444. 1.0 - A2 * COS60,
  445. A2 * SIN60
  446. },
  447. {
  448. A2 * COS60,
  449. 1.0 + A2 * COS60,
  450. A2 * SIN60
  451. },
  452. {
  453. -A2 * COS60,
  454. 1.0 + A2 * COS60,
  455. A2 * SIN60
  456. }
  457. };
  458. /* make display list objects
  459. screen -- for checkerboard floor
  460. shadow -- matrix to project insect onto flat surface
  461. viewit -- viewing transformation
  462. and various parts of the body and their shadows
  463. */
  464. void
  465. doViewit (void) {
  466. /*
  467. glFrustum (-8.0, 8.0, -8.0 * 0.75, 8.0 * 0.75, 10.0, 135.0);
  468. guPerspective (viewitFOV, viewitASPECT, 0.01, 131072.);
  469. */
  470. glRotatef (ctheta/10, 1, 0, 0);
  471. glRotatef (cphi/10, 0, 0, 1);
  472. glTranslatef (cx, cy, cz);
  473. }
  474. void
  475. createobjects (void) {
  476. int i,
  477. j,
  478. k;
  479. screen = glGenLists(32);
  480. if (screen == 0) tkQuit();
  481. shadow = screen + 1;
  482. body = screen + 2;
  483. body_shadow = screen + 3;
  484. /* hip [4..9]
  485. * thigh [10..15]
  486. * knee [16..21]
  487. * shin [22..27]
  488. */
  489. hip[0] = screen + 4;
  490. thigh[0] = screen + 10;
  491. kneeball[0] = screen + 16;
  492. shin[0] = screen + 22;
  493. hip_shadow = screen + 28;
  494. thigh_shadow = screen + 29;
  495. kneeball_shadow = screen + 30;
  496. shin_shadow = screen + 31;
  497. glNewList (screen, GL_COMPILE);
  498. glShadeModel(GL_FLAT);
  499. /* Changed for ECLIPSE 8 bit machine */
  500. if (is_8bit)
  501. glIndexi (ECLIPSE8_GRID);
  502. else
  503. glIndexi (GRID);
  504. k = 1;
  505. for (i = -8; i < 7; i++)
  506. for (j = -8; j < 7; j++) {
  507. if (k == 0) {
  508. scr[0][0] = i * 3;
  509. scr[0][1] = j * 3;
  510. scr[1][0] = (i + 1) * 3;
  511. scr[1][1] = j * 3;
  512. scr[2][0] = (i + 1) * 3;
  513. scr[2][1] = (j + 1) * 3;
  514. scr[3][0] = i * 3;
  515. scr[3][1] = (j + 1) * 3;
  516. polf2i (4, scr);
  517. }
  518. k = 1 - k;
  519. }
  520. glEndList ();
  521. glNewList (shadow, GL_COMPILE);
  522. glShadeModel(GL_FLAT);
  523. {
  524. float sx,
  525. sy,
  526. sz;
  527. GLfloat mshadow[16];
  528. sx = -1.0;
  529. sy = -1.0;
  530. sz = 1.0;
  531. gl_IdentifyMatrix (mshadow);
  532. /*
  533. mshadow[2][0] = -sx / sz;
  534. mshadow[2][1] = -sy / sz;
  535. mshadow[2][2] = 0.;
  536. */
  537. mshadow[8] = -sx / sz;
  538. mshadow[9] = -sy / sz;
  539. mshadow[10] = 0;
  540. glMultMatrixf (mshadow);
  541. }
  542. glIndexi (BLACK);
  543. glEndList ();
  544. for (i = 0; i < 12; i++) {
  545. b7[i][2] = R1 * SIN60;
  546. b7[i][0] = R1 * COS60 * cos ((float) i * (PI / 6.0) + (PI / 12.0));
  547. b7[i][1] = R1 * COS60 * sin ((float) i * (PI / 6.0) + (PI / 12.0));
  548. b8[11 - i][2] = -R1 * SIN60;
  549. b8[11 - i][0] = R1 * COS60 * cos ((float) i * (PI / 6.0) + (PI / 12.0));
  550. b8[11 - i][1] = R1 * COS60 * sin ((float) i * (PI / 6.0) + (PI / 12.0));
  551. }
  552. for (i = 0; i < 6; i++) {
  553. k2[i][0] = A2 * COS60;
  554. k2[i][1] = A2 * cos ((float) i * (PI / 3.0)) + 1.0;
  555. k2[i][2] = A2 * sin ((float) i * (PI / 3.0));
  556. k3[5 - i][0] = -A2 * COS60;
  557. k3[5 - i][1] = A2 * cos ((float) i * (PI / 3.0)) + 1.0;
  558. k3[5 - i][2] = A2 * sin ((float) i * (PI / 3.0));
  559. }
  560. glNewList (body, GL_COMPILE);
  561. glShadeModel(GL_FLAT);
  562. glEnable (GL_CULL_FACE);
  563. getpolycolor (0, b7);
  564. polf (12, b7);
  565. getpolycolor (0, b8);
  566. polf (12, b8);
  567. getpolycolor (0, b1);
  568. polf (4, b1);
  569. getpolycolor (0, b2);
  570. polf (4, b2);
  571. getpolycolor (0, b3);
  572. polf (4, b3);
  573. getpolycolor (0, b4);
  574. polf (4, b4);
  575. getpolycolor (0, b5);
  576. polf (4, b5);
  577. getpolycolor (0, b6);
  578. polf (4, b6);
  579. for (i = 0; i < 5; i++) {
  580. rotate60 ('z', 4, b1);
  581. rotate60 ('z', 4, b2);
  582. rotate60 ('z', 4, b3);
  583. rotate60 ('z', 4, b4);
  584. rotate60 ('z', 4, b5);
  585. rotate60 ('z', 4, b6);
  586. getpolycolor (0, b1);
  587. polf (4, b1);
  588. getpolycolor (0, b2);
  589. polf (4, b2);
  590. getpolycolor (0, b3);
  591. polf (4, b3);
  592. getpolycolor (0, b4);
  593. polf (4, b4);
  594. getpolycolor (0, b5);
  595. polf (4, b5);
  596. getpolycolor (0, b6);
  597. polf (4, b6);
  598. }
  599. glDisable (GL_CULL_FACE);
  600. glEndList ();
  601. glNewList (body_shadow, GL_COMPILE);
  602. glShadeModel(GL_FLAT);
  603. glIndexi (SHADOW_COLOR);
  604. if (lit (3, b7))
  605. polf (12, b7);
  606. if (lit (3, b1))
  607. polf (4, b1);
  608. if (lit (3, b2))
  609. polf (4, b2);
  610. if (lit (3, b3))
  611. polf (4, b3);
  612. if (lit (3, b4))
  613. polf (4, b4);
  614. if (lit (3, b5))
  615. polf (4, b5);
  616. if (lit (3, b6))
  617. polf (4, b6);
  618. for (i = 0; i < 5; i++) {
  619. rotate60 ('z', 4, b1);
  620. rotate60 ('z', 4, b2);
  621. rotate60 ('z', 4, b3);
  622. rotate60 ('z', 4, b4);
  623. rotate60 ('z', 4, b5);
  624. rotate60 ('z', 4, b6);
  625. if (lit (3, b1))
  626. polf (4, b1);
  627. if (lit (3, b2))
  628. polf (4, b2);
  629. if (lit (3, b3))
  630. polf (4, b3);
  631. if (lit (3, b4))
  632. polf (4, b4);
  633. if (lit (3, b5))
  634. polf (4, b5);
  635. if (lit (3, b6))
  636. polf (4, b6);
  637. }
  638. glEndList ();
  639. for (j = 0; j < 6; j++) {
  640. hip[j] = hip[0] + j;
  641. glNewList (hip[j], GL_COMPILE);
  642. glShadeModel(GL_FLAT);
  643. glEnable (GL_CULL_FACE);
  644. getpolycolor (1, h1);
  645. polf (4, h1);
  646. getpolycolor (1, h2);
  647. polf (4, h2);
  648. getpolycolor (1, h3);
  649. polf (3, h3);
  650. for (i = 0; i < 5; i++) {
  651. rotate60 ('y', 4, h1);
  652. rotate60 ('y', 4, h2);
  653. rotate60 ('y', 3, h3);
  654. getpolycolor (1, h1);
  655. polf (4, h1);
  656. getpolycolor (1, h2);
  657. polf (4, h2);
  658. getpolycolor (1, h3);
  659. polf (3, h3);
  660. }
  661. phi += PI / 3.0;
  662. getlightvector ();
  663. glDisable (GL_CULL_FACE);
  664. glEndList ();
  665. }
  666. glNewList (hip_shadow, GL_COMPILE);
  667. glShadeModel(GL_FLAT);
  668. /*glEnable (GL_CULL_FACE);*/
  669. glIndexi (SHADOW_COLOR);
  670. polf (4, h1);
  671. polf (4, h2);
  672. polf (3, h3);
  673. for (i = 0; i < 5; i++) {
  674. rotate60 ('y', 4, h1);
  675. rotate60 ('y', 4, h2);
  676. rotate60 ('y', 3, h3);
  677. polf (4, h1);
  678. polf (4, h2);
  679. polf (3, h3);
  680. }
  681. /*glDisable (GL_CULL_FACE);*/
  682. glEndList ();
  683. phi = 0.0;
  684. theta = PI / 4.0;
  685. getlightvector ();
  686. for (j = 0; j < 6; j++) {
  687. thigh[j] = thigh[0] + j;
  688. glNewList (thigh[j], GL_COMPILE);
  689. glShadeModel(GL_FLAT);
  690. glEnable (GL_CULL_FACE);
  691. getpolycolor (2, t1);
  692. polf (4, t1);
  693. getpolycolor (2, t2);
  694. polf (3, t2);
  695. getpolycolor (2, t3);
  696. polf (3, t3);
  697. getpolycolor (2, t4);
  698. polf (3, t4);
  699. getpolycolor (2, t5);
  700. polf (3, t5);
  701. getpolycolor (2, t6);
  702. polf (3, t6);
  703. getpolycolor (2, t7);
  704. polf (3, t7);
  705. getpolycolor (2, t8);
  706. polf (4, t8);
  707. glDisable (GL_CULL_FACE);
  708. glEndList ();
  709. kneeball[j] = kneeball[0] + j;
  710. glNewList (kneeball[j], GL_COMPILE);
  711. glShadeModel(GL_FLAT);
  712. glEnable (GL_CULL_FACE);
  713. getpolycolor (3, k1);
  714. polf (4, k1);
  715. for (k = 0; k < 4; k++)
  716. k1[k][1] -= 1.0;
  717. rotate60 ('x', 4, k1);
  718. for (k = 0; k < 4; k++)
  719. k1[k][1] += 1.0;
  720. for (i = 0; i < 5; i++) {
  721. if (i != 0) {
  722. getpolycolor (3, k1);
  723. polf (4, k1);
  724. }
  725. for (k = 0; k < 4; k++)
  726. k1[k][1] -= 1.0;
  727. rotate60 ('x', 4, k1);
  728. for (k = 0; k < 4; k++)
  729. k1[k][1] += 1.0;
  730. }
  731. getpolycolor (3, k2);
  732. polf (6, k2);
  733. getpolycolor (3, k3);
  734. polf (6, k3);
  735. glDisable (GL_CULL_FACE);
  736. glEndList ();
  737. shin[j] = shin[0] + j;
  738. glNewList (shin[j], GL_COMPILE);
  739. glShadeModel(GL_FLAT);
  740. glEnable (GL_CULL_FACE);
  741. getpolycolor (4, s1);
  742. polf (4, s1);
  743. getpolycolor (4, s2);
  744. polf (4, s2);
  745. getpolycolor (4, s3);
  746. polf (4, s3);
  747. getpolycolor (4, s4);
  748. polf (4, s4);
  749. getpolycolor (4, s5);
  750. polf (4, s5);
  751. glDisable (GL_CULL_FACE);
  752. glEndList ();
  753. theta -= PI / 3.0;
  754. getlightvector ();
  755. }
  756. glNewList (thigh_shadow, GL_COMPILE);
  757. glShadeModel(GL_FLAT);
  758. /*glEnable (GL_CULL_FACE);*/
  759. glIndexi (SHADOW_COLOR);
  760. polf (4, t1);
  761. polf (3, t2);
  762. polf (3, t3);
  763. polf (3, t4);
  764. polf (3, t5);
  765. polf (3, t6);
  766. polf (3, t7);
  767. polf (4, t8);
  768. /*glDisable (GL_CULL_FACE);*/
  769. glEndList ();
  770. glNewList (kneeball_shadow, GL_COMPILE);
  771. glShadeModel(GL_FLAT);
  772. /*glEnable (GL_CULL_FACE);*/
  773. glIndexi (SHADOW_COLOR);
  774. polf (4, k1);
  775. for (k = 0; k < 4; k++)
  776. k1[k][1] -= 1.0;
  777. rotate60 ('x', 4, k1);
  778. for (k = 0; k < 4; k++)
  779. k1[k][1] += 1.0;
  780. for (i = 0; i < 5; i++) {
  781. if (i != 0) {
  782. polf (4, k1);
  783. }
  784. for (k = 0; k < 4; k++)
  785. k1[k][1] -= 1.0;
  786. rotate60 ('x', 4, k1);
  787. for (k = 0; k < 4; k++)
  788. k1[k][1] += 1.0;
  789. }
  790. polf (6, k2);
  791. polf (6, k3);
  792. /*glDisable (GL_CULL_FACE);*/
  793. glEndList ();
  794. glNewList (shin_shadow, GL_COMPILE);
  795. glShadeModel(GL_FLAT);
  796. /*glEnable (GL_CULL_FACE);*/
  797. glIndexi (SHADOW_COLOR);
  798. polf (4, s1);
  799. polf (4, s2);
  800. polf (4, s3);
  801. polf (4, s4);
  802. polf (4, s5);
  803. /*glDisable (GL_CULL_FACE);*/
  804. glEndList ();
  805. }