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.

1540 lines
44 KiB

  1. glsBeginGLS(1, 0);
  2. glMatrixMode(GL_PROJECTION);
  3. glLoadIdentity();
  4. glFrustum(-1, 1, -1, 1, 1, 3);
  5. glMatrixMode(GL_MODELVIEW);
  6. glLoadIdentity();
  7. glTranslatef(0, 0, -2);
  8. glEnable(GL_DEPTH_TEST);
  9. glEnable(GL_LIGHTING);
  10. glEnable(GL_LIGHT0);
  11. glLightfv(GL_LIGHT0, GL_POSITION, {2, 4, 2, 1});
  12. glLightfv(GL_LIGHT0, GL_AMBIENT, {0.2, 0.2, 0.2, 1});
  13. glLightfv(GL_LIGHT0, GL_DIFFUSE, {0.8, 0.8, 0.8, 1});
  14. glLightfv(GL_LIGHT0, GL_SPECULAR, {0.4, 0.4, 0.4, 1});
  15. glEnable(GL_NORMALIZE);
  16. glFogfv(GL_FOG_COLOR, {0, 0, 0, 0});
  17. glFogfv(GL_FOG_INDEX, {0});
  18. glFogf(GL_FOG_MODE, GL_EXP);
  19. glFogf(GL_FOG_DENSITY, 0.5);
  20. glFogf(GL_FOG_START, 1);
  21. glFogf(GL_FOG_END, 3);
  22. glEnable(GL_CULL_FACE);
  23. glCullFace(GL_BACK);
  24. glShadeModel(GL_SMOOTH);
  25. glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA);
  26. glPolygonStipple(GLS_NONE)({
  27. 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
  28. 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
  29. 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
  30. 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
  31. 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
  32. 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
  33. 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
  34. 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
  35. 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
  36. 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
  37. 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
  38. 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
  39. 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
  40. 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
  41. 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
  42. 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55
  43. });
  44. glClearColor(0, 0, 0, 1);
  45. glClearIndex(0);
  46. glClearDepth(1);
  47. glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
  48. glPushMatrix();
  49. glTranslatef(0, -1.5, 0);
  50. glRotatef(-90, 1, 0, 0);
  51. glScalef(2, 2, 2);
  52. glGenLists(1);
  53. glNewList(1, GL_COMPILE_AND_EXECUTE);
  54. glNormal3fv({0, 0, 1});
  55. glBegin(GL_QUADS);
  56. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0.8, 1});
  57. glVertex4fv({-1, -0.666667, 0, 1});
  58. glVertex4fv({-1, -1, 0, 1});
  59. glVertex4fv({-0.666667, -1, 0, 1});
  60. glVertex4fv({-0.666667, -0.666667, 0, 1});
  61. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0.8, 0.8, 0, 1});
  62. glVertex4fv({-0.666667, -0.666667, 0, 1});
  63. glVertex4fv({-0.666667, -1, 0, 1});
  64. glVertex4fv({-0.333333, -1, 0, 1});
  65. glVertex4fv({-0.333333, -0.666667, 0, 1});
  66. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0.8, 1});
  67. glVertex4fv({-0.333333, -0.666667, 0, 1});
  68. glVertex4fv({-0.333333, -1, 0, 1});
  69. glVertex4fv({0, -1, 0, 1});
  70. glVertex4fv({0, -0.666667, 0, 1});
  71. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0.8, 0.8, 0, 1});
  72. glVertex4fv({0, -0.666667, 0, 1});
  73. glVertex4fv({0, -1, 0, 1});
  74. glVertex4fv({0.333333, -1, 0, 1});
  75. glVertex4fv({0.333333, -0.666667, 0, 1});
  76. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0.8, 1});
  77. glVertex4fv({0.333333, -0.666667, 0, 1});
  78. glVertex4fv({0.333333, -1, 0, 1});
  79. glVertex4fv({0.666667, -1, 0, 1});
  80. glVertex4fv({0.666667, -0.666667, 0, 1});
  81. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0.8, 0.8, 0, 1});
  82. glVertex4fv({0.666667, -0.666667, 0, 1});
  83. glVertex4fv({0.666667, -1, 0, 1});
  84. glVertex4fv({1, -1, 0, 1});
  85. glVertex4fv({1, -0.666667, 0, 1});
  86. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0.8, 0.8, 0, 1});
  87. glVertex4fv({-1, -0.333333, 0, 1});
  88. glVertex4fv({-1, -0.666667, 0, 1});
  89. glVertex4fv({-0.666667, -0.666667, 0, 1});
  90. glVertex4fv({-0.666667, -0.333333, 0, 1});
  91. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0.8, 1});
  92. glVertex4fv({-0.666667, -0.333333, 0, 1});
  93. glVertex4fv({-0.666667, -0.666667, 0, 1});
  94. glVertex4fv({-0.333333, -0.666667, 0, 1});
  95. glVertex4fv({-0.333333, -0.333333, 0, 1});
  96. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0.8, 0.8, 0, 1});
  97. glVertex4fv({-0.333333, -0.333333, 0, 1});
  98. glVertex4fv({-0.333333, -0.666667, 0, 1});
  99. glVertex4fv({0, -0.666667, 0, 1});
  100. glVertex4fv({0, -0.333333, 0, 1});
  101. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0.8, 1});
  102. glVertex4fv({0, -0.333333, 0, 1});
  103. glVertex4fv({0, -0.666667, 0, 1});
  104. glVertex4fv({0.333333, -0.666667, 0, 1});
  105. glVertex4fv({0.333333, -0.333333, 0, 1});
  106. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0.8, 0.8, 0, 1});
  107. glVertex4fv({0.333333, -0.333333, 0, 1});
  108. glVertex4fv({0.333333, -0.666667, 0, 1});
  109. glVertex4fv({0.666667, -0.666667, 0, 1});
  110. glVertex4fv({0.666667, -0.333333, 0, 1});
  111. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0.8, 1});
  112. glVertex4fv({0.666667, -0.333333, 0, 1});
  113. glVertex4fv({0.666667, -0.666667, 0, 1});
  114. glVertex4fv({1, -0.666667, 0, 1});
  115. glVertex4fv({1, -0.333333, 0, 1});
  116. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0.8, 1});
  117. glVertex4fv({-1, 0, 0, 1});
  118. glVertex4fv({-1, -0.333333, 0, 1});
  119. glVertex4fv({-0.666667, -0.333333, 0, 1});
  120. glVertex4fv({-0.666667, 0, 0, 1});
  121. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0.8, 0.8, 0, 1});
  122. glVertex4fv({-0.666667, 0, 0, 1});
  123. glVertex4fv({-0.666667, -0.333333, 0, 1});
  124. glVertex4fv({-0.333333, -0.333333, 0, 1});
  125. glVertex4fv({-0.333333, 0, 0, 1});
  126. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0.8, 1});
  127. glVertex4fv({-0.333333, 0, 0, 1});
  128. glVertex4fv({-0.333333, -0.333333, 0, 1});
  129. glVertex4fv({0, -0.333333, 0, 1});
  130. glVertex4fv({0, 0, 0, 1});
  131. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0.8, 0.8, 0, 1});
  132. glVertex4fv({0, 0, 0, 1});
  133. glVertex4fv({0, -0.333333, 0, 1});
  134. glVertex4fv({0.333333, -0.333333, 0, 1});
  135. glVertex4fv({0.333333, 0, 0, 1});
  136. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0.8, 1});
  137. glVertex4fv({0.333333, 0, 0, 1});
  138. glVertex4fv({0.333333, -0.333333, 0, 1});
  139. glVertex4fv({0.666667, -0.333333, 0, 1});
  140. glVertex4fv({0.666667, 0, 0, 1});
  141. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0.8, 0.8, 0, 1});
  142. glVertex4fv({0.666667, 0, 0, 1});
  143. glVertex4fv({0.666667, -0.333333, 0, 1});
  144. glVertex4fv({1, -0.333333, 0, 1});
  145. glVertex4fv({1, 0, 0, 1});
  146. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0.8, 0.8, 0, 1});
  147. glVertex4fv({-1, 0.333333, 0, 1});
  148. glVertex4fv({-1, 0, 0, 1});
  149. glVertex4fv({-0.666667, 0, 0, 1});
  150. glVertex4fv({-0.666667, 0.333333, 0, 1});
  151. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0.8, 1});
  152. glVertex4fv({-0.666667, 0.333333, 0, 1});
  153. glVertex4fv({-0.666667, 0, 0, 1});
  154. glVertex4fv({-0.333333, 0, 0, 1});
  155. glVertex4fv({-0.333333, 0.333333, 0, 1});
  156. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0.8, 0.8, 0, 1});
  157. glVertex4fv({-0.333333, 0.333333, 0, 1});
  158. glVertex4fv({-0.333333, 0, 0, 1});
  159. glVertex4fv({0, 0, 0, 1});
  160. glVertex4fv({0, 0.333333, 0, 1});
  161. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0.8, 1});
  162. glVertex4fv({0, 0.333333, 0, 1});
  163. glVertex4fv({0, 0, 0, 1});
  164. glVertex4fv({0.333333, 0, 0, 1});
  165. glVertex4fv({0.333333, 0.333333, 0, 1});
  166. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0.8, 0.8, 0, 1});
  167. glVertex4fv({0.333333, 0.333333, 0, 1});
  168. glVertex4fv({0.333333, 0, 0, 1});
  169. glVertex4fv({0.666667, 0, 0, 1});
  170. glVertex4fv({0.666667, 0.333333, 0, 1});
  171. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0.8, 1});
  172. glVertex4fv({0.666667, 0.333333, 0, 1});
  173. glVertex4fv({0.666667, 0, 0, 1});
  174. glVertex4fv({1, 0, 0, 1});
  175. glVertex4fv({1, 0.333333, 0, 1});
  176. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0.8, 1});
  177. glVertex4fv({-1, 0.666667, 0, 1});
  178. glVertex4fv({-1, 0.333333, 0, 1});
  179. glVertex4fv({-0.666667, 0.333333, 0, 1});
  180. glVertex4fv({-0.666667, 0.666667, 0, 1});
  181. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0.8, 0.8, 0, 1});
  182. glVertex4fv({-0.666667, 0.666667, 0, 1});
  183. glVertex4fv({-0.666667, 0.333333, 0, 1});
  184. glVertex4fv({-0.333333, 0.333333, 0, 1});
  185. glVertex4fv({-0.333333, 0.666667, 0, 1});
  186. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0.8, 1});
  187. glVertex4fv({-0.333333, 0.666667, 0, 1});
  188. glVertex4fv({-0.333333, 0.333333, 0, 1});
  189. glVertex4fv({0, 0.333333, 0, 1});
  190. glVertex4fv({0, 0.666667, 0, 1});
  191. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0.8, 0.8, 0, 1});
  192. glVertex4fv({0, 0.666667, 0, 1});
  193. glVertex4fv({0, 0.333333, 0, 1});
  194. glVertex4fv({0.333333, 0.333333, 0, 1});
  195. glVertex4fv({0.333333, 0.666667, 0, 1});
  196. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0.8, 1});
  197. glVertex4fv({0.333333, 0.666667, 0, 1});
  198. glVertex4fv({0.333333, 0.333333, 0, 1});
  199. glVertex4fv({0.666667, 0.333333, 0, 1});
  200. glVertex4fv({0.666667, 0.666667, 0, 1});
  201. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0.8, 0.8, 0, 1});
  202. glVertex4fv({0.666667, 0.666667, 0, 1});
  203. glVertex4fv({0.666667, 0.333333, 0, 1});
  204. glVertex4fv({1, 0.333333, 0, 1});
  205. glVertex4fv({1, 0.666667, 0, 1});
  206. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0.8, 0.8, 0, 1});
  207. glVertex4fv({-1, 1, 0, 1});
  208. glVertex4fv({-1, 0.666667, 0, 1});
  209. glVertex4fv({-0.666667, 0.666667, 0, 1});
  210. glVertex4fv({-0.666667, 1, 0, 1});
  211. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0.8, 1});
  212. glVertex4fv({-0.666667, 1, 0, 1});
  213. glVertex4fv({-0.666667, 0.666667, 0, 1});
  214. glVertex4fv({-0.333333, 0.666667, 0, 1});
  215. glVertex4fv({-0.333333, 1, 0, 1});
  216. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0.8, 0.8, 0, 1});
  217. glVertex4fv({-0.333333, 1, 0, 1});
  218. glVertex4fv({-0.333333, 0.666667, 0, 1});
  219. glVertex4fv({0, 0.666667, 0, 1});
  220. glVertex4fv({0, 1, 0, 1});
  221. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0.8, 1});
  222. glVertex4fv({0, 1, 0, 1});
  223. glVertex4fv({0, 0.666667, 0, 1});
  224. glVertex4fv({0.333333, 0.666667, 0, 1});
  225. glVertex4fv({0.333333, 1, 0, 1});
  226. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0.8, 0.8, 0, 1});
  227. glVertex4fv({0.333333, 1, 0, 1});
  228. glVertex4fv({0.333333, 0.666667, 0, 1});
  229. glVertex4fv({0.666667, 0.666667, 0, 1});
  230. glVertex4fv({0.666667, 1, 0, 1});
  231. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0.8, 1});
  232. glVertex4fv({0.666667, 1, 0, 1});
  233. glVertex4fv({0.666667, 0.666667, 0, 1});
  234. glVertex4fv({1, 0.666667, 0, 1});
  235. glVertex4fv({1, 1, 0, 1});
  236. glEnd();
  237. glEndList();
  238. glPopMatrix();
  239. glPushMatrix();
  240. glTranslatef(0, 0, -0.9);
  241. glScalef(2, 2, 2);
  242. glCallList(1);
  243. glPopMatrix();
  244. glPushMatrix();
  245. glTranslatef(0, 0.2, 0);
  246. glScalef(0.3, 0.3, 0.3);
  247. glRotatef(0, 1, 0, 0);
  248. glRotatef(0, 0, 1, 0);
  249. glRotatef(0, 0, 0, 1);
  250. glScalef(1, 2, 1);
  251. glGetFloatv(GL_MODELVIEW_MATRIX, 0x000000007fffad68);
  252. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0.8, 0, 0, 1});
  253. glNormal3fv({-1, 0, 0});
  254. glBegin(GL_POLYGON);
  255. glVertex4fv({-1, -1, -1, 1});
  256. glVertex4fv({-1, -1, 1, 1});
  257. glVertex4fv({-1, 1, 1, 1});
  258. glVertex4fv({-1, 1, -1, 1});
  259. glEnd();
  260. glNormal3fv({1, 0, 0});
  261. glBegin(GL_POLYGON);
  262. glVertex4fv({1, 1, 1, 1});
  263. glVertex4fv({1, -1, 1, 1});
  264. glVertex4fv({1, -1, -1, 1});
  265. glVertex4fv({1, 1, -1, 1});
  266. glEnd();
  267. glNormal3fv({0, -1, 0});
  268. glBegin(GL_POLYGON);
  269. glVertex4fv({-1, -1, -1, 1});
  270. glVertex4fv({1, -1, -1, 1});
  271. glVertex4fv({1, -1, 1, 1});
  272. glVertex4fv({-1, -1, 1, 1});
  273. glEnd();
  274. glNormal3fv({0, 1, 0});
  275. glBegin(GL_POLYGON);
  276. glVertex4fv({1, 1, 1, 1});
  277. glVertex4fv({1, 1, -1, 1});
  278. glVertex4fv({-1, 1, -1, 1});
  279. glVertex4fv({-1, 1, 1, 1});
  280. glEnd();
  281. glNormal3fv({0, 0, -1});
  282. glBegin(GL_POLYGON);
  283. glVertex4fv({-1, -1, -1, 1});
  284. glVertex4fv({-1, 1, -1, 1});
  285. glVertex4fv({1, 1, -1, 1});
  286. glVertex4fv({1, -1, -1, 1});
  287. glEnd();
  288. glNormal3fv({0, 0, 1});
  289. glBegin(GL_POLYGON);
  290. glVertex4fv({1, 1, 1, 1});
  291. glVertex4fv({-1, 1, 1, 1});
  292. glVertex4fv({-1, -1, 1, 1});
  293. glVertex4fv({1, -1, 1, 1});
  294. glEnd();
  295. glPopMatrix();
  296. glDepthMask(GL_FALSE);
  297. glEnable(GL_BLEND);
  298. glPushMatrix();
  299. glMultMatrixf({
  300. 5.499 , 0 , 0 , 0 ,
  301. -2 , 1.499 , -2 , -1 ,
  302. 0 , 0 , 5.499 , 0 ,
  303. -2.998 , -5.996 , -2.998 , 4
  304. });
  305. glTranslatef(0, 0, 2);
  306. glMultMatrixf({
  307. 0.3 , 0 , 0 , 0 ,
  308. 0 , 0.6 , 0 , 0 ,
  309. 0 , 0 , 0.3 , 0 ,
  310. 0 , 0.2 , -2 , 1
  311. });
  312. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0, 0.4});
  313. glNormal3fv({-1, 0, 0});
  314. glBegin(GL_POLYGON);
  315. glVertex4fv({-1, -1, -1, 1});
  316. glVertex4fv({-1, -1, 1, 1});
  317. glVertex4fv({-1, 1, 1, 1});
  318. glVertex4fv({-1, 1, -1, 1});
  319. glEnd();
  320. glNormal3fv({1, 0, 0});
  321. glBegin(GL_POLYGON);
  322. glVertex4fv({1, 1, 1, 1});
  323. glVertex4fv({1, -1, 1, 1});
  324. glVertex4fv({1, -1, -1, 1});
  325. glVertex4fv({1, 1, -1, 1});
  326. glEnd();
  327. glNormal3fv({0, -1, 0});
  328. glBegin(GL_POLYGON);
  329. glVertex4fv({-1, -1, -1, 1});
  330. glVertex4fv({1, -1, -1, 1});
  331. glVertex4fv({1, -1, 1, 1});
  332. glVertex4fv({-1, -1, 1, 1});
  333. glEnd();
  334. glNormal3fv({0, 1, 0});
  335. glBegin(GL_POLYGON);
  336. glVertex4fv({1, 1, 1, 1});
  337. glVertex4fv({1, 1, -1, 1});
  338. glVertex4fv({-1, 1, -1, 1});
  339. glVertex4fv({-1, 1, 1, 1});
  340. glEnd();
  341. glNormal3fv({0, 0, -1});
  342. glBegin(GL_POLYGON);
  343. glVertex4fv({-1, -1, -1, 1});
  344. glVertex4fv({-1, 1, -1, 1});
  345. glVertex4fv({1, 1, -1, 1});
  346. glVertex4fv({1, -1, -1, 1});
  347. glEnd();
  348. glNormal3fv({0, 0, 1});
  349. glBegin(GL_POLYGON);
  350. glVertex4fv({1, 1, 1, 1});
  351. glVertex4fv({-1, 1, 1, 1});
  352. glVertex4fv({-1, -1, 1, 1});
  353. glVertex4fv({1, -1, 1, 1});
  354. glEnd();
  355. glPopMatrix();
  356. glPushMatrix();
  357. glMultMatrixf({
  358. 2.899 , 0 , 0 , 0 ,
  359. 0 , 2.899 , 0 , 0 ,
  360. -2 , -4 , 0.899 , -1 ,
  361. -1.798 , -3.596 , -1.798 , 2
  362. });
  363. glTranslatef(0, 0, 2);
  364. glMultMatrixf({
  365. 0.3 , 0 , 0 , 0 ,
  366. 0 , 0.6 , 0 , 0 ,
  367. 0 , 0 , 0.3 , 0 ,
  368. 0 , 0.2 , -2 , 1
  369. });
  370. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0, 0.4});
  371. glNormal3fv({-1, 0, 0});
  372. glBegin(GL_POLYGON);
  373. glVertex4fv({-1, -1, -1, 1});
  374. glVertex4fv({-1, -1, 1, 1});
  375. glVertex4fv({-1, 1, 1, 1});
  376. glVertex4fv({-1, 1, -1, 1});
  377. glEnd();
  378. glNormal3fv({1, 0, 0});
  379. glBegin(GL_POLYGON);
  380. glVertex4fv({1, 1, 1, 1});
  381. glVertex4fv({1, -1, 1, 1});
  382. glVertex4fv({1, -1, -1, 1});
  383. glVertex4fv({1, 1, -1, 1});
  384. glEnd();
  385. glNormal3fv({0, -1, 0});
  386. glBegin(GL_POLYGON);
  387. glVertex4fv({-1, -1, -1, 1});
  388. glVertex4fv({1, -1, -1, 1});
  389. glVertex4fv({1, -1, 1, 1});
  390. glVertex4fv({-1, -1, 1, 1});
  391. glEnd();
  392. glNormal3fv({0, 1, 0});
  393. glBegin(GL_POLYGON);
  394. glVertex4fv({1, 1, 1, 1});
  395. glVertex4fv({1, 1, -1, 1});
  396. glVertex4fv({-1, 1, -1, 1});
  397. glVertex4fv({-1, 1, 1, 1});
  398. glEnd();
  399. glNormal3fv({0, 0, -1});
  400. glBegin(GL_POLYGON);
  401. glVertex4fv({-1, -1, -1, 1});
  402. glVertex4fv({-1, 1, -1, 1});
  403. glVertex4fv({1, 1, -1, 1});
  404. glVertex4fv({1, -1, -1, 1});
  405. glEnd();
  406. glNormal3fv({0, 0, 1});
  407. glBegin(GL_POLYGON);
  408. glVertex4fv({1, 1, 1, 1});
  409. glVertex4fv({-1, 1, 1, 1});
  410. glVertex4fv({-1, -1, 1, 1});
  411. glVertex4fv({1, -1, 1, 1});
  412. glEnd();
  413. glPopMatrix();
  414. glDepthMask(GL_TRUE);
  415. glDisable(GL_BLEND);
  416. glViewport(0, 0, 300, 300);
  417. glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
  418. glPushMatrix();
  419. glTranslatef(0, -1.5, 0);
  420. glRotatef(-90, 1, 0, 0);
  421. glScalef(2, 2, 2);
  422. glCallList(1);
  423. glPopMatrix();
  424. glPushMatrix();
  425. glTranslatef(0, 0, -0.9);
  426. glScalef(2, 2, 2);
  427. glCallList(1);
  428. glPopMatrix();
  429. glPushMatrix();
  430. glTranslatef(0, 0.2, 0);
  431. glScalef(0.3, 0.3, 0.3);
  432. glRotatef(12, 1, 0, 0);
  433. glRotatef(6, 0, 1, 0);
  434. glRotatef(3, 0, 0, 1);
  435. glScalef(1, 2, 1);
  436. glGetFloatv(GL_MODELVIEW_MATRIX, 0x000000007fffad68);
  437. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0.8, 0, 0, 1});
  438. glNormal3fv({-1, 0, 0});
  439. glBegin(GL_POLYGON);
  440. glVertex4fv({-1, -1, -1, 1});
  441. glVertex4fv({-1, -1, 1, 1});
  442. glVertex4fv({-1, 1, 1, 1});
  443. glVertex4fv({-1, 1, -1, 1});
  444. glEnd();
  445. glNormal3fv({1, 0, 0});
  446. glBegin(GL_POLYGON);
  447. glVertex4fv({1, 1, 1, 1});
  448. glVertex4fv({1, -1, 1, 1});
  449. glVertex4fv({1, -1, -1, 1});
  450. glVertex4fv({1, 1, -1, 1});
  451. glEnd();
  452. glNormal3fv({0, -1, 0});
  453. glBegin(GL_POLYGON);
  454. glVertex4fv({-1, -1, -1, 1});
  455. glVertex4fv({1, -1, -1, 1});
  456. glVertex4fv({1, -1, 1, 1});
  457. glVertex4fv({-1, -1, 1, 1});
  458. glEnd();
  459. glNormal3fv({0, 1, 0});
  460. glBegin(GL_POLYGON);
  461. glVertex4fv({1, 1, 1, 1});
  462. glVertex4fv({1, 1, -1, 1});
  463. glVertex4fv({-1, 1, -1, 1});
  464. glVertex4fv({-1, 1, 1, 1});
  465. glEnd();
  466. glNormal3fv({0, 0, -1});
  467. glBegin(GL_POLYGON);
  468. glVertex4fv({-1, -1, -1, 1});
  469. glVertex4fv({-1, 1, -1, 1});
  470. glVertex4fv({1, 1, -1, 1});
  471. glVertex4fv({1, -1, -1, 1});
  472. glEnd();
  473. glNormal3fv({0, 0, 1});
  474. glBegin(GL_POLYGON);
  475. glVertex4fv({1, 1, 1, 1});
  476. glVertex4fv({-1, 1, 1, 1});
  477. glVertex4fv({-1, -1, 1, 1});
  478. glVertex4fv({1, -1, 1, 1});
  479. glEnd();
  480. glPopMatrix();
  481. glDepthMask(GL_FALSE);
  482. glEnable(GL_BLEND);
  483. glPushMatrix();
  484. glMultMatrixf({
  485. 5.499 , 0 , 0 , 0 ,
  486. -2 , 1.499 , -2 , -1 ,
  487. 0 , 0 , 5.499 , 0 ,
  488. -2.998 , -5.996 , -2.998 , 4
  489. });
  490. glTranslatef(0, 0, 2);
  491. glMultMatrixf({
  492. 0.297948 , 0.0218686 , -0.0273669 , 0 ,
  493. -0.0312296 , 0.585402 , 0.127787 , 0 ,
  494. 0.0313586 , -0.0620319 , 0.291837 , 0 ,
  495. 0 , 0.2 , -2 , 1
  496. });
  497. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0, 0.4});
  498. glNormal3fv({-1, 0, 0});
  499. glBegin(GL_POLYGON);
  500. glVertex4fv({-1, -1, -1, 1});
  501. glVertex4fv({-1, -1, 1, 1});
  502. glVertex4fv({-1, 1, 1, 1});
  503. glVertex4fv({-1, 1, -1, 1});
  504. glEnd();
  505. glNormal3fv({1, 0, 0});
  506. glBegin(GL_POLYGON);
  507. glVertex4fv({1, 1, 1, 1});
  508. glVertex4fv({1, -1, 1, 1});
  509. glVertex4fv({1, -1, -1, 1});
  510. glVertex4fv({1, 1, -1, 1});
  511. glEnd();
  512. glNormal3fv({0, -1, 0});
  513. glBegin(GL_POLYGON);
  514. glVertex4fv({-1, -1, -1, 1});
  515. glVertex4fv({1, -1, -1, 1});
  516. glVertex4fv({1, -1, 1, 1});
  517. glVertex4fv({-1, -1, 1, 1});
  518. glEnd();
  519. glNormal3fv({0, 1, 0});
  520. glBegin(GL_POLYGON);
  521. glVertex4fv({1, 1, 1, 1});
  522. glVertex4fv({1, 1, -1, 1});
  523. glVertex4fv({-1, 1, -1, 1});
  524. glVertex4fv({-1, 1, 1, 1});
  525. glEnd();
  526. glNormal3fv({0, 0, -1});
  527. glBegin(GL_POLYGON);
  528. glVertex4fv({-1, -1, -1, 1});
  529. glVertex4fv({-1, 1, -1, 1});
  530. glVertex4fv({1, 1, -1, 1});
  531. glVertex4fv({1, -1, -1, 1});
  532. glEnd();
  533. glNormal3fv({0, 0, 1});
  534. glBegin(GL_POLYGON);
  535. glVertex4fv({1, 1, 1, 1});
  536. glVertex4fv({-1, 1, 1, 1});
  537. glVertex4fv({-1, -1, 1, 1});
  538. glVertex4fv({1, -1, 1, 1});
  539. glEnd();
  540. glPopMatrix();
  541. glPushMatrix();
  542. glMultMatrixf({
  543. 2.899 , 0 , 0 , 0 ,
  544. 0 , 2.899 , 0 , 0 ,
  545. -2 , -4 , 0.899 , -1 ,
  546. -1.798 , -3.596 , -1.798 , 2
  547. });
  548. glTranslatef(0, 0, 2);
  549. glMultMatrixf({
  550. 0.297948 , 0.0218686 , -0.0273669 , 0 ,
  551. -0.0312296 , 0.585402 , 0.127787 , 0 ,
  552. 0.0313586 , -0.0620319 , 0.291837 , 0 ,
  553. 0 , 0.2 , -2 , 1
  554. });
  555. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0, 0.4});
  556. glNormal3fv({-1, 0, 0});
  557. glBegin(GL_POLYGON);
  558. glVertex4fv({-1, -1, -1, 1});
  559. glVertex4fv({-1, -1, 1, 1});
  560. glVertex4fv({-1, 1, 1, 1});
  561. glVertex4fv({-1, 1, -1, 1});
  562. glEnd();
  563. glNormal3fv({1, 0, 0});
  564. glBegin(GL_POLYGON);
  565. glVertex4fv({1, 1, 1, 1});
  566. glVertex4fv({1, -1, 1, 1});
  567. glVertex4fv({1, -1, -1, 1});
  568. glVertex4fv({1, 1, -1, 1});
  569. glEnd();
  570. glNormal3fv({0, -1, 0});
  571. glBegin(GL_POLYGON);
  572. glVertex4fv({-1, -1, -1, 1});
  573. glVertex4fv({1, -1, -1, 1});
  574. glVertex4fv({1, -1, 1, 1});
  575. glVertex4fv({-1, -1, 1, 1});
  576. glEnd();
  577. glNormal3fv({0, 1, 0});
  578. glBegin(GL_POLYGON);
  579. glVertex4fv({1, 1, 1, 1});
  580. glVertex4fv({1, 1, -1, 1});
  581. glVertex4fv({-1, 1, -1, 1});
  582. glVertex4fv({-1, 1, 1, 1});
  583. glEnd();
  584. glNormal3fv({0, 0, -1});
  585. glBegin(GL_POLYGON);
  586. glVertex4fv({-1, -1, -1, 1});
  587. glVertex4fv({-1, 1, -1, 1});
  588. glVertex4fv({1, 1, -1, 1});
  589. glVertex4fv({1, -1, -1, 1});
  590. glEnd();
  591. glNormal3fv({0, 0, 1});
  592. glBegin(GL_POLYGON);
  593. glVertex4fv({1, 1, 1, 1});
  594. glVertex4fv({-1, 1, 1, 1});
  595. glVertex4fv({-1, -1, 1, 1});
  596. glVertex4fv({1, -1, 1, 1});
  597. glEnd();
  598. glPopMatrix();
  599. glDepthMask(GL_TRUE);
  600. glDisable(GL_BLEND);
  601. glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
  602. glPushMatrix();
  603. glTranslatef(0, -1.5, 0);
  604. glRotatef(-90, 1, 0, 0);
  605. glScalef(2, 2, 2);
  606. glCallList(1);
  607. glPopMatrix();
  608. glPushMatrix();
  609. glTranslatef(0, 0, -0.9);
  610. glScalef(2, 2, 2);
  611. glCallList(1);
  612. glPopMatrix();
  613. glPushMatrix();
  614. glTranslatef(0, 0.2, 0);
  615. glScalef(0.3, 0.3, 0.3);
  616. glRotatef(24, 1, 0, 0);
  617. glRotatef(12, 0, 1, 0);
  618. glRotatef(6, 0, 0, 1);
  619. glScalef(1, 2, 1);
  620. glGetFloatv(GL_MODELVIEW_MATRIX, 0x000000007fffad68);
  621. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0.8, 0, 0, 1});
  622. glNormal3fv({-1, 0, 0});
  623. glBegin(GL_POLYGON);
  624. glVertex4fv({-1, -1, -1, 1});
  625. glVertex4fv({-1, -1, 1, 1});
  626. glVertex4fv({-1, 1, 1, 1});
  627. glVertex4fv({-1, 1, -1, 1});
  628. glEnd();
  629. glNormal3fv({1, 0, 0});
  630. glBegin(GL_POLYGON);
  631. glVertex4fv({1, 1, 1, 1});
  632. glVertex4fv({1, -1, 1, 1});
  633. glVertex4fv({1, -1, -1, 1});
  634. glVertex4fv({1, 1, -1, 1});
  635. glEnd();
  636. glNormal3fv({0, -1, 0});
  637. glBegin(GL_POLYGON);
  638. glVertex4fv({-1, -1, -1, 1});
  639. glVertex4fv({1, -1, -1, 1});
  640. glVertex4fv({1, -1, 1, 1});
  641. glVertex4fv({-1, -1, 1, 1});
  642. glEnd();
  643. glNormal3fv({0, 1, 0});
  644. glBegin(GL_POLYGON);
  645. glVertex4fv({1, 1, 1, 1});
  646. glVertex4fv({1, 1, -1, 1});
  647. glVertex4fv({-1, 1, -1, 1});
  648. glVertex4fv({-1, 1, 1, 1});
  649. glEnd();
  650. glNormal3fv({0, 0, -1});
  651. glBegin(GL_POLYGON);
  652. glVertex4fv({-1, -1, -1, 1});
  653. glVertex4fv({-1, 1, -1, 1});
  654. glVertex4fv({1, 1, -1, 1});
  655. glVertex4fv({1, -1, -1, 1});
  656. glEnd();
  657. glNormal3fv({0, 0, 1});
  658. glBegin(GL_POLYGON);
  659. glVertex4fv({1, 1, 1, 1});
  660. glVertex4fv({-1, 1, 1, 1});
  661. glVertex4fv({-1, -1, 1, 1});
  662. glVertex4fv({1, -1, 1, 1});
  663. glEnd();
  664. glPopMatrix();
  665. glDepthMask(GL_FALSE);
  666. glEnable(GL_BLEND);
  667. glPushMatrix();
  668. glMultMatrixf({
  669. 5.499 , 0 , 0 , 0 ,
  670. -2 , 1.499 , -2 , -1 ,
  671. 0 , 0 , 5.499 , 0 ,
  672. -2.998 , -5.996 , -2.998 , 4
  673. });
  674. glTranslatef(0, 0, 2);
  675. glMultMatrixf({
  676. 0.291837 , 0.0538781 , -0.0439142 , 0 ,
  677. -0.0613466 , 0.539821 , 0.254618 , 0 ,
  678. 0.0623736 , -0.119355 , 0.268075 , 0 ,
  679. 0 , 0.2 , -2 , 1
  680. });
  681. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0, 0.4});
  682. glNormal3fv({-1, 0, 0});
  683. glBegin(GL_POLYGON);
  684. glVertex4fv({-1, -1, -1, 1});
  685. glVertex4fv({-1, -1, 1, 1});
  686. glVertex4fv({-1, 1, 1, 1});
  687. glVertex4fv({-1, 1, -1, 1});
  688. glEnd();
  689. glNormal3fv({1, 0, 0});
  690. glBegin(GL_POLYGON);
  691. glVertex4fv({1, 1, 1, 1});
  692. glVertex4fv({1, -1, 1, 1});
  693. glVertex4fv({1, -1, -1, 1});
  694. glVertex4fv({1, 1, -1, 1});
  695. glEnd();
  696. glNormal3fv({0, -1, 0});
  697. glBegin(GL_POLYGON);
  698. glVertex4fv({-1, -1, -1, 1});
  699. glVertex4fv({1, -1, -1, 1});
  700. glVertex4fv({1, -1, 1, 1});
  701. glVertex4fv({-1, -1, 1, 1});
  702. glEnd();
  703. glNormal3fv({0, 1, 0});
  704. glBegin(GL_POLYGON);
  705. glVertex4fv({1, 1, 1, 1});
  706. glVertex4fv({1, 1, -1, 1});
  707. glVertex4fv({-1, 1, -1, 1});
  708. glVertex4fv({-1, 1, 1, 1});
  709. glEnd();
  710. glNormal3fv({0, 0, -1});
  711. glBegin(GL_POLYGON);
  712. glVertex4fv({-1, -1, -1, 1});
  713. glVertex4fv({-1, 1, -1, 1});
  714. glVertex4fv({1, 1, -1, 1});
  715. glVertex4fv({1, -1, -1, 1});
  716. glEnd();
  717. glNormal3fv({0, 0, 1});
  718. glBegin(GL_POLYGON);
  719. glVertex4fv({1, 1, 1, 1});
  720. glVertex4fv({-1, 1, 1, 1});
  721. glVertex4fv({-1, -1, 1, 1});
  722. glVertex4fv({1, -1, 1, 1});
  723. glEnd();
  724. glPopMatrix();
  725. glPushMatrix();
  726. glMultMatrixf({
  727. 2.899 , 0 , 0 , 0 ,
  728. 0 , 2.899 , 0 , 0 ,
  729. -2 , -4 , 0.899 , -1 ,
  730. -1.798 , -3.596 , -1.798 , 2
  731. });
  732. glTranslatef(0, 0, 2);
  733. glMultMatrixf({
  734. 0.291837 , 0.0538781 , -0.0439142 , 0 ,
  735. -0.0613466 , 0.539821 , 0.254618 , 0 ,
  736. 0.0623736 , -0.119355 , 0.268075 , 0 ,
  737. 0 , 0.2 , -2 , 1
  738. });
  739. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0, 0.4});
  740. glNormal3fv({-1, 0, 0});
  741. glBegin(GL_POLYGON);
  742. glVertex4fv({-1, -1, -1, 1});
  743. glVertex4fv({-1, -1, 1, 1});
  744. glVertex4fv({-1, 1, 1, 1});
  745. glVertex4fv({-1, 1, -1, 1});
  746. glEnd();
  747. glNormal3fv({1, 0, 0});
  748. glBegin(GL_POLYGON);
  749. glVertex4fv({1, 1, 1, 1});
  750. glVertex4fv({1, -1, 1, 1});
  751. glVertex4fv({1, -1, -1, 1});
  752. glVertex4fv({1, 1, -1, 1});
  753. glEnd();
  754. glNormal3fv({0, -1, 0});
  755. glBegin(GL_POLYGON);
  756. glVertex4fv({-1, -1, -1, 1});
  757. glVertex4fv({1, -1, -1, 1});
  758. glVertex4fv({1, -1, 1, 1});
  759. glVertex4fv({-1, -1, 1, 1});
  760. glEnd();
  761. glNormal3fv({0, 1, 0});
  762. glBegin(GL_POLYGON);
  763. glVertex4fv({1, 1, 1, 1});
  764. glVertex4fv({1, 1, -1, 1});
  765. glVertex4fv({-1, 1, -1, 1});
  766. glVertex4fv({-1, 1, 1, 1});
  767. glEnd();
  768. glNormal3fv({0, 0, -1});
  769. glBegin(GL_POLYGON);
  770. glVertex4fv({-1, -1, -1, 1});
  771. glVertex4fv({-1, 1, -1, 1});
  772. glVertex4fv({1, 1, -1, 1});
  773. glVertex4fv({1, -1, -1, 1});
  774. glEnd();
  775. glNormal3fv({0, 0, 1});
  776. glBegin(GL_POLYGON);
  777. glVertex4fv({1, 1, 1, 1});
  778. glVertex4fv({-1, 1, 1, 1});
  779. glVertex4fv({-1, -1, 1, 1});
  780. glVertex4fv({1, -1, 1, 1});
  781. glEnd();
  782. glPopMatrix();
  783. glDepthMask(GL_TRUE);
  784. glDisable(GL_BLEND);
  785. glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
  786. glPushMatrix();
  787. glTranslatef(0, -1.5, 0);
  788. glRotatef(-90, 1, 0, 0);
  789. glScalef(2, 2, 2);
  790. glCallList(1);
  791. glPopMatrix();
  792. glPushMatrix();
  793. glTranslatef(0, 0, -0.9);
  794. glScalef(2, 2, 2);
  795. glCallList(1);
  796. glPopMatrix();
  797. glPushMatrix();
  798. glTranslatef(0, 0.2, 0);
  799. glScalef(0.3, 0.3, 0.3);
  800. glRotatef(36, 1, 0, 0);
  801. glRotatef(18, 0, 1, 0);
  802. glRotatef(9, 0, 0, 1);
  803. glScalef(1, 2, 1);
  804. glGetFloatv(GL_MODELVIEW_MATRIX, 0x000000007fffad68);
  805. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0.8, 0, 0, 1});
  806. glNormal3fv({-1, 0, 0});
  807. glBegin(GL_POLYGON);
  808. glVertex4fv({-1, -1, -1, 1});
  809. glVertex4fv({-1, -1, 1, 1});
  810. glVertex4fv({-1, 1, 1, 1});
  811. glVertex4fv({-1, 1, -1, 1});
  812. glEnd();
  813. glNormal3fv({1, 0, 0});
  814. glBegin(GL_POLYGON);
  815. glVertex4fv({1, 1, 1, 1});
  816. glVertex4fv({1, -1, 1, 1});
  817. glVertex4fv({1, -1, -1, 1});
  818. glVertex4fv({1, 1, -1, 1});
  819. glEnd();
  820. glNormal3fv({0, -1, 0});
  821. glBegin(GL_POLYGON);
  822. glVertex4fv({-1, -1, -1, 1});
  823. glVertex4fv({1, -1, -1, 1});
  824. glVertex4fv({1, -1, 1, 1});
  825. glVertex4fv({-1, -1, 1, 1});
  826. glEnd();
  827. glNormal3fv({0, 1, 0});
  828. glBegin(GL_POLYGON);
  829. glVertex4fv({1, 1, 1, 1});
  830. glVertex4fv({1, 1, -1, 1});
  831. glVertex4fv({-1, 1, -1, 1});
  832. glVertex4fv({-1, 1, 1, 1});
  833. glEnd();
  834. glNormal3fv({0, 0, -1});
  835. glBegin(GL_POLYGON);
  836. glVertex4fv({-1, -1, -1, 1});
  837. glVertex4fv({-1, 1, -1, 1});
  838. glVertex4fv({1, 1, -1, 1});
  839. glVertex4fv({1, -1, -1, 1});
  840. glEnd();
  841. glNormal3fv({0, 0, 1});
  842. glBegin(GL_POLYGON);
  843. glVertex4fv({1, 1, 1, 1});
  844. glVertex4fv({-1, 1, 1, 1});
  845. glVertex4fv({-1, -1, 1, 1});
  846. glVertex4fv({1, -1, 1, 1});
  847. glEnd();
  848. glPopMatrix();
  849. glDepthMask(GL_FALSE);
  850. glEnable(GL_BLEND);
  851. glPushMatrix();
  852. glMultMatrixf({
  853. 5.499 , 0 , 0 , 0 ,
  854. -2 , 1.499 , -2 , -1 ,
  855. 0 , 0 , 5.499 , 0 ,
  856. -2.998 , -5.996 , -2.998 , 4
  857. });
  858. glTranslatef(0, 0, 2);
  859. glMultMatrixf({
  860. 0.281804 , 0.0917874 , -0.0464917 , 0 ,
  861. -0.0892669 , 0.462386 , 0.371795 , 0 ,
  862. 0.0927052 , -0.167705 , 0.230826 , 0 ,
  863. 0 , 0.2 , -2 , 1
  864. });
  865. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0, 0.4});
  866. glNormal3fv({-1, 0, 0});
  867. glBegin(GL_POLYGON);
  868. glVertex4fv({-1, -1, -1, 1});
  869. glVertex4fv({-1, -1, 1, 1});
  870. glVertex4fv({-1, 1, 1, 1});
  871. glVertex4fv({-1, 1, -1, 1});
  872. glEnd();
  873. glNormal3fv({1, 0, 0});
  874. glBegin(GL_POLYGON);
  875. glVertex4fv({1, 1, 1, 1});
  876. glVertex4fv({1, -1, 1, 1});
  877. glVertex4fv({1, -1, -1, 1});
  878. glVertex4fv({1, 1, -1, 1});
  879. glEnd();
  880. glNormal3fv({0, -1, 0});
  881. glBegin(GL_POLYGON);
  882. glVertex4fv({-1, -1, -1, 1});
  883. glVertex4fv({1, -1, -1, 1});
  884. glVertex4fv({1, -1, 1, 1});
  885. glVertex4fv({-1, -1, 1, 1});
  886. glEnd();
  887. glNormal3fv({0, 1, 0});
  888. glBegin(GL_POLYGON);
  889. glVertex4fv({1, 1, 1, 1});
  890. glVertex4fv({1, 1, -1, 1});
  891. glVertex4fv({-1, 1, -1, 1});
  892. glVertex4fv({-1, 1, 1, 1});
  893. glEnd();
  894. glNormal3fv({0, 0, -1});
  895. glBegin(GL_POLYGON);
  896. glVertex4fv({-1, -1, -1, 1});
  897. glVertex4fv({-1, 1, -1, 1});
  898. glVertex4fv({1, 1, -1, 1});
  899. glVertex4fv({1, -1, -1, 1});
  900. glEnd();
  901. glNormal3fv({0, 0, 1});
  902. glBegin(GL_POLYGON);
  903. glVertex4fv({1, 1, 1, 1});
  904. glVertex4fv({-1, 1, 1, 1});
  905. glVertex4fv({-1, -1, 1, 1});
  906. glVertex4fv({1, -1, 1, 1});
  907. glEnd();
  908. glPopMatrix();
  909. glPushMatrix();
  910. glMultMatrixf({
  911. 2.899 , 0 , 0 , 0 ,
  912. 0 , 2.899 , 0 , 0 ,
  913. -2 , -4 , 0.899 , -1 ,
  914. -1.798 , -3.596 , -1.798 , 2
  915. });
  916. glTranslatef(0, 0, 2);
  917. glMultMatrixf({
  918. 0.281804 , 0.0917874 , -0.0464917 , 0 ,
  919. -0.0892669 , 0.462386 , 0.371795 , 0 ,
  920. 0.0927052 , -0.167705 , 0.230826 , 0 ,
  921. 0 , 0.2 , -2 , 1
  922. });
  923. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0, 0.4});
  924. glNormal3fv({-1, 0, 0});
  925. glBegin(GL_POLYGON);
  926. glVertex4fv({-1, -1, -1, 1});
  927. glVertex4fv({-1, -1, 1, 1});
  928. glVertex4fv({-1, 1, 1, 1});
  929. glVertex4fv({-1, 1, -1, 1});
  930. glEnd();
  931. glNormal3fv({1, 0, 0});
  932. glBegin(GL_POLYGON);
  933. glVertex4fv({1, 1, 1, 1});
  934. glVertex4fv({1, -1, 1, 1});
  935. glVertex4fv({1, -1, -1, 1});
  936. glVertex4fv({1, 1, -1, 1});
  937. glEnd();
  938. glNormal3fv({0, -1, 0});
  939. glBegin(GL_POLYGON);
  940. glVertex4fv({-1, -1, -1, 1});
  941. glVertex4fv({1, -1, -1, 1});
  942. glVertex4fv({1, -1, 1, 1});
  943. glVertex4fv({-1, -1, 1, 1});
  944. glEnd();
  945. glNormal3fv({0, 1, 0});
  946. glBegin(GL_POLYGON);
  947. glVertex4fv({1, 1, 1, 1});
  948. glVertex4fv({1, 1, -1, 1});
  949. glVertex4fv({-1, 1, -1, 1});
  950. glVertex4fv({-1, 1, 1, 1});
  951. glEnd();
  952. glNormal3fv({0, 0, -1});
  953. glBegin(GL_POLYGON);
  954. glVertex4fv({-1, -1, -1, 1});
  955. glVertex4fv({-1, 1, -1, 1});
  956. glVertex4fv({1, 1, -1, 1});
  957. glVertex4fv({1, -1, -1, 1});
  958. glEnd();
  959. glNormal3fv({0, 0, 1});
  960. glBegin(GL_POLYGON);
  961. glVertex4fv({1, 1, 1, 1});
  962. glVertex4fv({-1, 1, 1, 1});
  963. glVertex4fv({-1, -1, 1, 1});
  964. glVertex4fv({1, -1, 1, 1});
  965. glEnd();
  966. glPopMatrix();
  967. glDepthMask(GL_TRUE);
  968. glDisable(GL_BLEND);
  969. glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
  970. glPushMatrix();
  971. glTranslatef(0, -1.5, 0);
  972. glRotatef(-90, 1, 0, 0);
  973. glScalef(2, 2, 2);
  974. glCallList(1);
  975. glPopMatrix();
  976. glPushMatrix();
  977. glTranslatef(0, 0, -0.9);
  978. glScalef(2, 2, 2);
  979. glCallList(1);
  980. glPopMatrix();
  981. glPushMatrix();
  982. glTranslatef(0, 0.2, 0);
  983. glScalef(0.3, 0.3, 0.3);
  984. glRotatef(48, 1, 0, 0);
  985. glRotatef(24, 0, 1, 0);
  986. glRotatef(12, 0, 0, 1);
  987. glScalef(1, 2, 1);
  988. glGetFloatv(GL_MODELVIEW_MATRIX, 0x000000007fffad68);
  989. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0.8, 0, 0, 1});
  990. glNormal3fv({-1, 0, 0});
  991. glBegin(GL_POLYGON);
  992. glVertex4fv({-1, -1, -1, 1});
  993. glVertex4fv({-1, -1, 1, 1});
  994. glVertex4fv({-1, 1, 1, 1});
  995. glVertex4fv({-1, 1, -1, 1});
  996. glEnd();
  997. glNormal3fv({1, 0, 0});
  998. glBegin(GL_POLYGON);
  999. glVertex4fv({1, 1, 1, 1});
  1000. glVertex4fv({1, -1, 1, 1});
  1001. glVertex4fv({1, -1, -1, 1});
  1002. glVertex4fv({1, 1, -1, 1});
  1003. glEnd();
  1004. glNormal3fv({0, -1, 0});
  1005. glBegin(GL_POLYGON);
  1006. glVertex4fv({-1, -1, -1, 1});
  1007. glVertex4fv({1, -1, -1, 1});
  1008. glVertex4fv({1, -1, 1, 1});
  1009. glVertex4fv({-1, -1, 1, 1});
  1010. glEnd();
  1011. glNormal3fv({0, 1, 0});
  1012. glBegin(GL_POLYGON);
  1013. glVertex4fv({1, 1, 1, 1});
  1014. glVertex4fv({1, 1, -1, 1});
  1015. glVertex4fv({-1, 1, -1, 1});
  1016. glVertex4fv({-1, 1, 1, 1});
  1017. glEnd();
  1018. glNormal3fv({0, 0, -1});
  1019. glBegin(GL_POLYGON);
  1020. glVertex4fv({-1, -1, -1, 1});
  1021. glVertex4fv({-1, 1, -1, 1});
  1022. glVertex4fv({1, 1, -1, 1});
  1023. glVertex4fv({1, -1, -1, 1});
  1024. glEnd();
  1025. glNormal3fv({0, 0, 1});
  1026. glBegin(GL_POLYGON);
  1027. glVertex4fv({1, 1, 1, 1});
  1028. glVertex4fv({-1, 1, 1, 1});
  1029. glVertex4fv({-1, -1, 1, 1});
  1030. glVertex4fv({1, -1, 1, 1});
  1031. glEnd();
  1032. glPopMatrix();
  1033. glDepthMask(GL_FALSE);
  1034. glEnable(GL_BLEND);
  1035. glPushMatrix();
  1036. glMultMatrixf({
  1037. 5.499 , 0 , 0 , 0 ,
  1038. -2 , 1.499 , -2 , -1 ,
  1039. 0 , 0 , 5.499 , 0 ,
  1040. -2.998 , -5.996 , -2.998 , 4
  1041. });
  1042. glTranslatef(0, 0, 2);
  1043. glMultMatrixf({
  1044. 0.268075 , 0.130434 , -0.0335112 , 0 ,
  1045. -0.113962 , 0.354998 , 0.470095 , 0 ,
  1046. 0.122021 , -0.203669 , 0.183384 , 0 ,
  1047. 0 , 0.2 , -2 , 1
  1048. });
  1049. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0, 0.4});
  1050. glNormal3fv({-1, 0, 0});
  1051. glBegin(GL_POLYGON);
  1052. glVertex4fv({-1, -1, -1, 1});
  1053. glVertex4fv({-1, -1, 1, 1});
  1054. glVertex4fv({-1, 1, 1, 1});
  1055. glVertex4fv({-1, 1, -1, 1});
  1056. glEnd();
  1057. glNormal3fv({1, 0, 0});
  1058. glBegin(GL_POLYGON);
  1059. glVertex4fv({1, 1, 1, 1});
  1060. glVertex4fv({1, -1, 1, 1});
  1061. glVertex4fv({1, -1, -1, 1});
  1062. glVertex4fv({1, 1, -1, 1});
  1063. glEnd();
  1064. glNormal3fv({0, -1, 0});
  1065. glBegin(GL_POLYGON);
  1066. glVertex4fv({-1, -1, -1, 1});
  1067. glVertex4fv({1, -1, -1, 1});
  1068. glVertex4fv({1, -1, 1, 1});
  1069. glVertex4fv({-1, -1, 1, 1});
  1070. glEnd();
  1071. glNormal3fv({0, 1, 0});
  1072. glBegin(GL_POLYGON);
  1073. glVertex4fv({1, 1, 1, 1});
  1074. glVertex4fv({1, 1, -1, 1});
  1075. glVertex4fv({-1, 1, -1, 1});
  1076. glVertex4fv({-1, 1, 1, 1});
  1077. glEnd();
  1078. glNormal3fv({0, 0, -1});
  1079. glBegin(GL_POLYGON);
  1080. glVertex4fv({-1, -1, -1, 1});
  1081. glVertex4fv({-1, 1, -1, 1});
  1082. glVertex4fv({1, 1, -1, 1});
  1083. glVertex4fv({1, -1, -1, 1});
  1084. glEnd();
  1085. glNormal3fv({0, 0, 1});
  1086. glBegin(GL_POLYGON);
  1087. glVertex4fv({1, 1, 1, 1});
  1088. glVertex4fv({-1, 1, 1, 1});
  1089. glVertex4fv({-1, -1, 1, 1});
  1090. glVertex4fv({1, -1, 1, 1});
  1091. glEnd();
  1092. glPopMatrix();
  1093. glPushMatrix();
  1094. glMultMatrixf({
  1095. 2.899 , 0 , 0 , 0 ,
  1096. 0 , 2.899 , 0 , 0 ,
  1097. -2 , -4 , 0.899 , -1 ,
  1098. -1.798 , -3.596 , -1.798 , 2
  1099. });
  1100. glTranslatef(0, 0, 2);
  1101. glMultMatrixf({
  1102. 0.268075 , 0.130434 , -0.0335112 , 0 ,
  1103. -0.113962 , 0.354998 , 0.470095 , 0 ,
  1104. 0.122021 , -0.203669 , 0.183384 , 0 ,
  1105. 0 , 0.2 , -2 , 1
  1106. });
  1107. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0, 0.4});
  1108. glNormal3fv({-1, 0, 0});
  1109. glBegin(GL_POLYGON);
  1110. glVertex4fv({-1, -1, -1, 1});
  1111. glVertex4fv({-1, -1, 1, 1});
  1112. glVertex4fv({-1, 1, 1, 1});
  1113. glVertex4fv({-1, 1, -1, 1});
  1114. glEnd();
  1115. glNormal3fv({1, 0, 0});
  1116. glBegin(GL_POLYGON);
  1117. glVertex4fv({1, 1, 1, 1});
  1118. glVertex4fv({1, -1, 1, 1});
  1119. glVertex4fv({1, -1, -1, 1});
  1120. glVertex4fv({1, 1, -1, 1});
  1121. glEnd();
  1122. glNormal3fv({0, -1, 0});
  1123. glBegin(GL_POLYGON);
  1124. glVertex4fv({-1, -1, -1, 1});
  1125. glVertex4fv({1, -1, -1, 1});
  1126. glVertex4fv({1, -1, 1, 1});
  1127. glVertex4fv({-1, -1, 1, 1});
  1128. glEnd();
  1129. glNormal3fv({0, 1, 0});
  1130. glBegin(GL_POLYGON);
  1131. glVertex4fv({1, 1, 1, 1});
  1132. glVertex4fv({1, 1, -1, 1});
  1133. glVertex4fv({-1, 1, -1, 1});
  1134. glVertex4fv({-1, 1, 1, 1});
  1135. glEnd();
  1136. glNormal3fv({0, 0, -1});
  1137. glBegin(GL_POLYGON);
  1138. glVertex4fv({-1, -1, -1, 1});
  1139. glVertex4fv({-1, 1, -1, 1});
  1140. glVertex4fv({1, 1, -1, 1});
  1141. glVertex4fv({1, -1, -1, 1});
  1142. glEnd();
  1143. glNormal3fv({0, 0, 1});
  1144. glBegin(GL_POLYGON);
  1145. glVertex4fv({1, 1, 1, 1});
  1146. glVertex4fv({-1, 1, 1, 1});
  1147. glVertex4fv({-1, -1, 1, 1});
  1148. glVertex4fv({1, -1, 1, 1});
  1149. glEnd();
  1150. glPopMatrix();
  1151. glDepthMask(GL_TRUE);
  1152. glDisable(GL_BLEND);
  1153. glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
  1154. glPushMatrix();
  1155. glTranslatef(0, -1.5, 0);
  1156. glRotatef(-90, 1, 0, 0);
  1157. glScalef(2, 2, 2);
  1158. glCallList(1);
  1159. glPopMatrix();
  1160. glPushMatrix();
  1161. glTranslatef(0, 0, -0.9);
  1162. glScalef(2, 2, 2);
  1163. glCallList(1);
  1164. glPopMatrix();
  1165. glPushMatrix();
  1166. glTranslatef(0, 0.2, 0);
  1167. glScalef(0.3, 0.3, 0.3);
  1168. glRotatef(60, 1, 0, 0);
  1169. glRotatef(30, 0, 1, 0);
  1170. glRotatef(15, 0, 0, 1);
  1171. glScalef(1, 2, 1);
  1172. glGetFloatv(GL_MODELVIEW_MATRIX, 0x000000007fffad68);
  1173. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0.8, 0, 0, 1});
  1174. glNormal3fv({-1, 0, 0});
  1175. glBegin(GL_POLYGON);
  1176. glVertex4fv({-1, -1, -1, 1});
  1177. glVertex4fv({-1, -1, 1, 1});
  1178. glVertex4fv({-1, 1, 1, 1});
  1179. glVertex4fv({-1, 1, -1, 1});
  1180. glEnd();
  1181. glNormal3fv({1, 0, 0});
  1182. glBegin(GL_POLYGON);
  1183. glVertex4fv({1, 1, 1, 1});
  1184. glVertex4fv({1, -1, 1, 1});
  1185. glVertex4fv({1, -1, -1, 1});
  1186. glVertex4fv({1, 1, -1, 1});
  1187. glEnd();
  1188. glNormal3fv({0, -1, 0});
  1189. glBegin(GL_POLYGON);
  1190. glVertex4fv({-1, -1, -1, 1});
  1191. glVertex4fv({1, -1, -1, 1});
  1192. glVertex4fv({1, -1, 1, 1});
  1193. glVertex4fv({-1, -1, 1, 1});
  1194. glEnd();
  1195. glNormal3fv({0, 1, 0});
  1196. glBegin(GL_POLYGON);
  1197. glVertex4fv({1, 1, 1, 1});
  1198. glVertex4fv({1, 1, -1, 1});
  1199. glVertex4fv({-1, 1, -1, 1});
  1200. glVertex4fv({-1, 1, 1, 1});
  1201. glEnd();
  1202. glNormal3fv({0, 0, -1});
  1203. glBegin(GL_POLYGON);
  1204. glVertex4fv({-1, -1, -1, 1});
  1205. glVertex4fv({-1, 1, -1, 1});
  1206. glVertex4fv({1, 1, -1, 1});
  1207. glVertex4fv({1, -1, -1, 1});
  1208. glEnd();
  1209. glNormal3fv({0, 0, 1});
  1210. glBegin(GL_POLYGON);
  1211. glVertex4fv({1, 1, 1, 1});
  1212. glVertex4fv({-1, 1, 1, 1});
  1213. glVertex4fv({-1, -1, 1, 1});
  1214. glVertex4fv({1, -1, 1, 1});
  1215. glEnd();
  1216. glPopMatrix();
  1217. glDepthMask(GL_FALSE);
  1218. glEnable(GL_BLEND);
  1219. glPushMatrix();
  1220. glMultMatrixf({
  1221. 5.499 , 0 , 0 , 0 ,
  1222. -2 , 1.499 , -2 , -1 ,
  1223. 0 , 0 , 5.499 , 0 ,
  1224. -2.998 , -5.996 , -2.998 , 4
  1225. });
  1226. glTranslatef(0, 0, 2);
  1227. glMultMatrixf({
  1228. 0.250955 , 0.1643 , -0.00520123, 0 ,
  1229. -0.134486 , 0.222534 , 0.540733 , 0 ,
  1230. 0.15 , -0.225 , 0.129904 , 0 ,
  1231. 0 , 0.2 , -2 , 1
  1232. });
  1233. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0, 0.4});
  1234. glNormal3fv({-1, 0, 0});
  1235. glBegin(GL_POLYGON);
  1236. glVertex4fv({-1, -1, -1, 1});
  1237. glVertex4fv({-1, -1, 1, 1});
  1238. glVertex4fv({-1, 1, 1, 1});
  1239. glVertex4fv({-1, 1, -1, 1});
  1240. glEnd();
  1241. glNormal3fv({1, 0, 0});
  1242. glBegin(GL_POLYGON);
  1243. glVertex4fv({1, 1, 1, 1});
  1244. glVertex4fv({1, -1, 1, 1});
  1245. glVertex4fv({1, -1, -1, 1});
  1246. glVertex4fv({1, 1, -1, 1});
  1247. glEnd();
  1248. glNormal3fv({0, -1, 0});
  1249. glBegin(GL_POLYGON);
  1250. glVertex4fv({-1, -1, -1, 1});
  1251. glVertex4fv({1, -1, -1, 1});
  1252. glVertex4fv({1, -1, 1, 1});
  1253. glVertex4fv({-1, -1, 1, 1});
  1254. glEnd();
  1255. glNormal3fv({0, 1, 0});
  1256. glBegin(GL_POLYGON);
  1257. glVertex4fv({1, 1, 1, 1});
  1258. glVertex4fv({1, 1, -1, 1});
  1259. glVertex4fv({-1, 1, -1, 1});
  1260. glVertex4fv({-1, 1, 1, 1});
  1261. glEnd();
  1262. glNormal3fv({0, 0, -1});
  1263. glBegin(GL_POLYGON);
  1264. glVertex4fv({-1, -1, -1, 1});
  1265. glVertex4fv({-1, 1, -1, 1});
  1266. glVertex4fv({1, 1, -1, 1});
  1267. glVertex4fv({1, -1, -1, 1});
  1268. glEnd();
  1269. glNormal3fv({0, 0, 1});
  1270. glBegin(GL_POLYGON);
  1271. glVertex4fv({1, 1, 1, 1});
  1272. glVertex4fv({-1, 1, 1, 1});
  1273. glVertex4fv({-1, -1, 1, 1});
  1274. glVertex4fv({1, -1, 1, 1});
  1275. glEnd();
  1276. glPopMatrix();
  1277. glPushMatrix();
  1278. glMultMatrixf({
  1279. 2.899 , 0 , 0 , 0 ,
  1280. 0 , 2.899 , 0 , 0 ,
  1281. -2 , -4 , 0.899 , -1 ,
  1282. -1.798 , -3.596 , -1.798 , 2
  1283. });
  1284. glTranslatef(0, 0, 2);
  1285. glMultMatrixf({
  1286. 0.250955 , 0.1643 , -0.00520123, 0 ,
  1287. -0.134486 , 0.222534 , 0.540733 , 0 ,
  1288. 0.15 , -0.225 , 0.129904 , 0 ,
  1289. 0 , 0.2 , -2 , 1
  1290. });
  1291. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0, 0.4});
  1292. glNormal3fv({-1, 0, 0});
  1293. glBegin(GL_POLYGON);
  1294. glVertex4fv({-1, -1, -1, 1});
  1295. glVertex4fv({-1, -1, 1, 1});
  1296. glVertex4fv({-1, 1, 1, 1});
  1297. glVertex4fv({-1, 1, -1, 1});
  1298. glEnd();
  1299. glNormal3fv({1, 0, 0});
  1300. glBegin(GL_POLYGON);
  1301. glVertex4fv({1, 1, 1, 1});
  1302. glVertex4fv({1, -1, 1, 1});
  1303. glVertex4fv({1, -1, -1, 1});
  1304. glVertex4fv({1, 1, -1, 1});
  1305. glEnd();
  1306. glNormal3fv({0, -1, 0});
  1307. glBegin(GL_POLYGON);
  1308. glVertex4fv({-1, -1, -1, 1});
  1309. glVertex4fv({1, -1, -1, 1});
  1310. glVertex4fv({1, -1, 1, 1});
  1311. glVertex4fv({-1, -1, 1, 1});
  1312. glEnd();
  1313. glNormal3fv({0, 1, 0});
  1314. glBegin(GL_POLYGON);
  1315. glVertex4fv({1, 1, 1, 1});
  1316. glVertex4fv({1, 1, -1, 1});
  1317. glVertex4fv({-1, 1, -1, 1});
  1318. glVertex4fv({-1, 1, 1, 1});
  1319. glEnd();
  1320. glNormal3fv({0, 0, -1});
  1321. glBegin(GL_POLYGON);
  1322. glVertex4fv({-1, -1, -1, 1});
  1323. glVertex4fv({-1, 1, -1, 1});
  1324. glVertex4fv({1, 1, -1, 1});
  1325. glVertex4fv({1, -1, -1, 1});
  1326. glEnd();
  1327. glNormal3fv({0, 0, 1});
  1328. glBegin(GL_POLYGON);
  1329. glVertex4fv({1, 1, 1, 1});
  1330. glVertex4fv({-1, 1, 1, 1});
  1331. glVertex4fv({-1, -1, 1, 1});
  1332. glVertex4fv({1, -1, 1, 1});
  1333. glEnd();
  1334. glPopMatrix();
  1335. glDepthMask(GL_TRUE);
  1336. glDisable(GL_BLEND);
  1337. glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
  1338. glPushMatrix();
  1339. glTranslatef(0, -1.5, 0);
  1340. glRotatef(-90, 1, 0, 0);
  1341. glScalef(2, 2, 2);
  1342. glCallList(1);
  1343. glPopMatrix();
  1344. glPushMatrix();
  1345. glTranslatef(0, 0, -0.9);
  1346. glScalef(2, 2, 2);
  1347. glCallList(1);
  1348. glPopMatrix();
  1349. glPushMatrix();
  1350. glTranslatef(0, 0.2, 0);
  1351. glScalef(0.3, 0.3, 0.3);
  1352. glRotatef(72, 1, 0, 0);
  1353. glRotatef(36, 0, 1, 0);
  1354. glRotatef(18, 0, 0, 1);
  1355. glScalef(1, 2, 1);
  1356. glGetFloatv(GL_MODELVIEW_MATRIX, 0x000000007fffad68);
  1357. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0.8, 0, 0, 1});
  1358. glNormal3fv({-1, 0, 0});
  1359. glBegin(GL_POLYGON);
  1360. glVertex4fv({-1, -1, -1, 1});
  1361. glVertex4fv({-1, -1, 1, 1});
  1362. glVertex4fv({-1, 1, 1, 1});
  1363. glVertex4fv({-1, 1, -1, 1});
  1364. glEnd();
  1365. glNormal3fv({1, 0, 0});
  1366. glBegin(GL_POLYGON);
  1367. glVertex4fv({1, 1, 1, 1});
  1368. glVertex4fv({1, -1, 1, 1});
  1369. glVertex4fv({1, -1, -1, 1});
  1370. glVertex4fv({1, 1, -1, 1});
  1371. glEnd();
  1372. glNormal3fv({0, -1, 0});
  1373. glBegin(GL_POLYGON);
  1374. glVertex4fv({-1, -1, -1, 1});
  1375. glVertex4fv({1, -1, -1, 1});
  1376. glVertex4fv({1, -1, 1, 1});
  1377. glVertex4fv({-1, -1, 1, 1});
  1378. glEnd();
  1379. glNormal3fv({0, 1, 0});
  1380. glBegin(GL_POLYGON);
  1381. glVertex4fv({1, 1, 1, 1});
  1382. glVertex4fv({1, 1, -1, 1});
  1383. glVertex4fv({-1, 1, -1, 1});
  1384. glVertex4fv({-1, 1, 1, 1});
  1385. glEnd();
  1386. glNormal3fv({0, 0, -1});
  1387. glBegin(GL_POLYGON);
  1388. glVertex4fv({-1, -1, -1, 1});
  1389. glVertex4fv({-1, 1, -1, 1});
  1390. glVertex4fv({1, 1, -1, 1});
  1391. glVertex4fv({1, -1, -1, 1});
  1392. glEnd();
  1393. glNormal3fv({0, 0, 1});
  1394. glBegin(GL_POLYGON);
  1395. glVertex4fv({1, 1, 1, 1});
  1396. glVertex4fv({-1, 1, 1, 1});
  1397. glVertex4fv({-1, -1, 1, 1});
  1398. glVertex4fv({1, -1, 1, 1});
  1399. glEnd();
  1400. glPopMatrix();
  1401. glDepthMask(GL_FALSE);
  1402. glEnable(GL_BLEND);
  1403. glPushMatrix();
  1404. glMultMatrixf({
  1405. 5.499 , 0 , 0 , 0 ,
  1406. -2 , 1.499 , -2 , -1 ,
  1407. 0 , 0 , 5.499 , 0 ,
  1408. -2.998 , -5.996 , -2.998 , 4
  1409. });
  1410. glTranslatef(0, 0, 2);
  1411. glMultMatrixf({
  1412. 0.230826 , 0.188145 , 0.0363442 , 0 ,
  1413. -0.15 , 0.072688 , 0.576383 , 0 ,
  1414. 0.176336 , -0.230826 , 0.075 , 0 ,
  1415. 0 , 0.2 , -2 , 1
  1416. });
  1417. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0, 0.4});
  1418. glNormal3fv({-1, 0, 0});
  1419. glBegin(GL_POLYGON);
  1420. glVertex4fv({-1, -1, -1, 1});
  1421. glVertex4fv({-1, -1, 1, 1});
  1422. glVertex4fv({-1, 1, 1, 1});
  1423. glVertex4fv({-1, 1, -1, 1});
  1424. glEnd();
  1425. glNormal3fv({1, 0, 0});
  1426. glBegin(GL_POLYGON);
  1427. glVertex4fv({1, 1, 1, 1});
  1428. glVertex4fv({1, -1, 1, 1});
  1429. glVertex4fv({1, -1, -1, 1});
  1430. glVertex4fv({1, 1, -1, 1});
  1431. glEnd();
  1432. glNormal3fv({0, -1, 0});
  1433. glBegin(GL_POLYGON);
  1434. glVertex4fv({-1, -1, -1, 1});
  1435. glVertex4fv({1, -1, -1, 1});
  1436. glVertex4fv({1, -1, 1, 1});
  1437. glVertex4fv({-1, -1, 1, 1});
  1438. glEnd();
  1439. glNormal3fv({0, 1, 0});
  1440. glBegin(GL_POLYGON);
  1441. glVertex4fv({1, 1, 1, 1});
  1442. glVertex4fv({1, 1, -1, 1});
  1443. glVertex4fv({-1, 1, -1, 1});
  1444. glVertex4fv({-1, 1, 1, 1});
  1445. glEnd();
  1446. glNormal3fv({0, 0, -1});
  1447. glBegin(GL_POLYGON);
  1448. glVertex4fv({-1, -1, -1, 1});
  1449. glVertex4fv({-1, 1, -1, 1});
  1450. glVertex4fv({1, 1, -1, 1});
  1451. glVertex4fv({1, -1, -1, 1});
  1452. glEnd();
  1453. glNormal3fv({0, 0, 1});
  1454. glBegin(GL_POLYGON);
  1455. glVertex4fv({1, 1, 1, 1});
  1456. glVertex4fv({-1, 1, 1, 1});
  1457. glVertex4fv({-1, -1, 1, 1});
  1458. glVertex4fv({1, -1, 1, 1});
  1459. glEnd();
  1460. glPopMatrix();
  1461. glPushMatrix();
  1462. glMultMatrixf({
  1463. 2.899 , 0 , 0 , 0 ,
  1464. 0 , 2.899 , 0 , 0 ,
  1465. -2 , -4 , 0.899 , -1 ,
  1466. -1.798 , -3.596 , -1.798 , 2
  1467. });
  1468. glTranslatef(0, 0, 2);
  1469. glMultMatrixf({
  1470. 0.230826 , 0.188145 , 0.0363442 , 0 ,
  1471. -0.15 , 0.072688 , 0.576383 , 0 ,
  1472. 0.176336 , -0.230826 , 0.075 , 0 ,
  1473. 0 , 0.2 , -2 , 1
  1474. });
  1475. glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, {0, 0, 0, 0.4});
  1476. glNormal3fv({-1, 0, 0});
  1477. glBegin(GL_POLYGON);
  1478. glVertex4fv({-1, -1, -1, 1});
  1479. glVertex4fv({-1, -1, 1, 1});
  1480. glVertex4fv({-1, 1, 1, 1});
  1481. glVertex4fv({-1, 1, -1, 1});
  1482. glEnd();
  1483. glNormal3fv({1, 0, 0});
  1484. glBegin(GL_POLYGON);
  1485. glVertex4fv({1, 1, 1, 1});
  1486. glVertex4fv({1, -1, 1, 1});
  1487. glVertex4fv({1, -1, -1, 1});
  1488. glVertex4fv({1, 1, -1, 1});
  1489. glEnd();
  1490. glNormal3fv({0, -1, 0});
  1491. glBegin(GL_POLYGON);
  1492. glVertex4fv({-1, -1, -1, 1});
  1493. glVertex4fv({1, -1, -1, 1});
  1494. glVertex4fv({1, -1, 1, 1});
  1495. glVertex4fv({-1, -1, 1, 1});
  1496. glEnd();
  1497. glNormal3fv({0, 1, 0});
  1498. glBegin(GL_POLYGON);
  1499. glVertex4fv({1, 1, 1, 1});
  1500. glVertex4fv({1, 1, -1, 1});
  1501. glVertex4fv({-1, 1, -1, 1});
  1502. glVertex4fv({-1, 1, 1, 1});
  1503. glEnd();
  1504. glNormal3fv({0, 0, -1});
  1505. glBegin(GL_POLYGON);
  1506. glVertex4fv({-1, -1, -1, 1});
  1507. glVertex4fv({-1, 1, -1, 1});
  1508. glVertex4fv({1, 1, -1, 1});
  1509. glVertex4fv({1, -1, -1, 1});
  1510. glEnd();
  1511. glNormal3fv({0, 0, 1});
  1512. glBegin(GL_POLYGON);
  1513. glVertex4fv({1, 1, 1, 1});
  1514. glVertex4fv({-1, 1, 1, 1});
  1515. glVertex4fv({-1, -1, 1, 1});
  1516. glVertex4fv({1, -1, 1, 1});
  1517. glEnd();
  1518. glPopMatrix();
  1519. glDepthMask(GL_TRUE);
  1520. glDisable(GL_BLEND);
  1521. glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
  1522. glPushMatrix();
  1523. glTranslatef(0, -1.5, 0);
  1524. glRotatef(-90, 1, 0, 0);
  1525. glScalef(2, 2, 2);
  1526. glCallList(1);
  1527. glPopMatrix();
  1528. glPushMatrix();
  1529. glTranslatef(0, 0, -0.9);
  1530. glScalef(2, 2, 2);
  1531. glCallList(1);
  1532. glPopMatrix();
  1533. glPushMatrix();
  1534. glTranslatef(0, 0.2, 0);
  1535. glScalef(0.3, 0.3, 0.3);
  1536. glRotatef(84, 1, 0, 0);
  1537. glRotatef(42, 0, 1, 0);
  1538. glRotatef(21, 0, 0, 1);
  1539. glScalef(1, 2, 1);
  1540. glsEndGLS();