1 
2 #ifndef _GLCLOCK_H_
3 #define _GLCLOCK_H_
4 
5 
6 #define TITLE_VER		"glclock-6.0 Beta 6.0"
7 #define AUTHOR			"June 2000 by Masa (Masaki Kawase)\n<E-Mail: masa@daionet.gr.jp>\n<http://www.daionet.gr.jp/~masa/>"
8 #define SIGN			"Presented by Masa."
9 
10 
11 // for Win32
12 #ifdef   WIN32
13 #define  WIN32_LEAN_AND_MEAN
14 #include <windows.h>
15 #include <tchar.h>
16 #include <mmsystem.h >
17 // glclock.ini
18 #define GLCLOCK_INI		"glclock.ini"
19 //#define _CONSOLE
20 
21 // for UNIX etc.
22 #else	// #ifdef   WIN32
23 #include <unistd.h>
24 #endif
25 
26 // for Mac
27 #ifdef macintosh
28 #define NO_SLEEP
29 #include "macsupport.h"
30 #endif	// #ifdef macintosh
31 
32 
33 #define NO_SELECT
34 //#define NO_SLEEP
35 
36 //#define INCLUDE_SYS_TIME_H
37 
38 #include <stdio.h>
39 #include <stdlib.h>
40 #include <signal.h>
41 #include <math.h>
42 #include <time.h>
43 
44 #ifdef INCLUDE_SYS_TIME_H
45 #include <sys/time.h>
46 #endif	// #ifdef INCLUDE_SYS_TIME_H
47 
48 #include <limits.h>
49 #include <setjmp.h>
50 #include <stdarg.h>
51 
52 #include "GLObject.H"
53 #include "Option.H"
54 
55 
56 // Debug
57 //#define GL_COMPILE	GL_COMPILE_AND_EXECUTE
58 
59 // -e 2 �Υǥ��ƥ�����ƥ�������֥��ɤ�
60 // �Ķ��ޥåԥ��θ�ǥ֥���
61 //#define DETAIL_TEXTURE_BLEND_AFTER_ENV
62 
63 // �ǥ��ƥ�����ƥ���������ѻ��ε���������
64 // Diffuse �����ˤ�ä�Ĵ���ʤ����� -r 1 �ϥƥ�������ˤ��Ĵ����
65 #define DETAIL_TEXTURE_BRIGHT_BY_DIFFUSE
66 
67 //#define CULL_REF_SKY_BY_ANGLE
68 
69 #define ________SOLID_SHADED_CLOCK
70 
71 //#if defined WIN32 && !defined _CONSOLE
72 
73 // Windows �� dll ����
74 //#define GLCLOCK_DLL_EXPORT
75 
76 // Windows �� ������ɥ��ޥͥ����Ȥ� glut ��Ȥ鷺 Win32API �� wgl �����
77 //#define DONOT_USE_GLUT_TO_MAGAGE_WINDOW
78 
79 //#endif	// #if defined WIN32 && !defined _CONSOLE
80 
81 #define OPENGL32_DLL	"opengl32.dll"
82 
83 // FPS ���ϥե����ޥå�
84 #define FORMAT_FPS		"%7.2f FPS"
85 #define FORMAT_KTPS		" %10.3f kTPS"
86 #define FORMAT_KTPF		"   at %8.3f kTPF"
87 
88 #define FORMAT_LOG_FPS		"%12.5f FPS"
89 #define FORMAT_LOG_KTPS		" %15.6f kTPS"
90 #define FORMAT_LOG_KTPF		"   at %8.3f kTPF"
91 
92 // �ǥե���ȥ����ϥե�����̾
93 #ifdef WIN32
94 #define OUTPUT_LOG_FILE		"glclock.log"
95 #else
96 #define OUTPUT_LOG_FILE		""
97 #endif
98 
99 // �����꡼����åȽ��ϥե�����̾
100 #define FILE_NAME_SCREEN_SHOT	"glclock_shot"
101 #define SIGNATURE_SCREEN_SHOT	"glclock screen shot"
102 
103 // -R ����������αǤ���ߤξ��ʱ��Ԥ�����
104 #ifdef  CULL_REF_SKY_BY_ANGLE
105 #define CULL_REF_SKY_AXIS		0.24f
106 #define REF_SKY_Z_TRANSLATE		-4.2f
107 
108 #else	// #ifdef CULL_REF_SKY_BY_ANGLE
109 #define REF_SKY_Z_TRANSLATE	-3.8f
110 
111 #endif	// #ifdef CULL_REF_SKY_BY_ANGLE ... #else
112 
113 
114 #define CULL_OBJECTS_BY_ANGLE
115 
116 #define CULL_SHELL_Z_AXIS	0.44f
117 #define CULL_BOARD_Z_AXIS	-0.03f
118 
119 
120 // glclock.dll ���������å�
121 #if defined GLCLOCK_DLL_EXPORT && defined WIN32
122 
123 #define DLL_EXPORT	__declspec(dllexport)
124 #define CCONV		_stdcall
125 
126 #else	// #if defined GLCLOCK_DLL_EXPORT && defined WIN32
127 
128 #define DLL_EXPORT
129 #define CCONV
130 
131 #endif	// #if defined GLCLOCK_DLL_EXPORT && defined WIN32 ... #else
132 
133 //#define GLCLOCK_RETURN_LONGJMP
134 #define	GLCLOCK_RET_LONGJMP_SUCCESS		1
135 #define	GLCLOCK_RET_LONGJMP_FAILURE		-1
136 
137 
138 #ifdef WIN32
139 
140 // glclock.dll
141 typedef int (APIENTRY * PFNGLCLOCKOPTPROC)(char *) ;
142 typedef int (APIENTRY * PFNGLCLOCKARGPROC)(int, char **) ;
143 #define GLCLOCK_DLL		"glclock.dll"
144 
145 #define  NM_RESOLUTION	12
146 
147 #endif	// #ifdef WIN32
148 
149 
150 // �ǥե���Ȥ� Voodoo �⡼�ɡʥե륹���꡼��-w 640 -h 480 ����
151 //#define VOODOO_MODE
152 
153 
154 // �Ķ��ޥåײù����ˡ��濴����ε�Υ�ˤ�ä��Ѳ��ʵ�Υ�Σ���
155 #define RADIUS_RATIO_SPECULAR	4.0f
156 #define RADIUS_RATIO_CHROME		8.0f
157 #define RADIUS_RATIO_CRYSTAL	8.0f
158 
159 // ��������ơ�����
160 #define CULL_STATUS_NONE	0x0000
161 #define CULL_STATUS_SHELL	0x0002
162 #define CULL_STATUS_FRONT	0x0004
163 
164 // -env 2
165 
166 // �������ǥ����ܥƥ�������֥��ɤˤ��ϥ��饤�ȡʣ��ѥ�����
167 // �Ķ��ƥ�������Υ֥饤��
168 #define CHROME_ENV2_ENV_BRIGHT		0.5f
169 
170 // ��°�ޥƥꥢ��ζ�°����
171 #define ENV2_MATERIAL_METAL_RATIO	0.82f
172 // ��°�ޥƥꥢ��Υ��ڥ���顼
173 #define ENV2_MATERIAL_SPECULAR		0.9f
174 // ��°�ޥƥꥢ��Υϥ��饤�Ȼؿ�
175 #define ENV2_MATERIAL_SHININESS		64.0f
176 
177 
178 // ��°�ƥ�����������
179 // �ϥ��饤�Ȳû����δĶ��ޥåפζ���
180 #define CHROME_BRIGHT			0.82f
181 //#define CHROME_BRIGHT			0.85f
182 
183 // ��°�ƥ�����������
184 // �饤�ȥޥåפζ���
185 #define CHROME_ADDING_LIGHT_RATIO	1.0f
186 
187 // ���ڥ���顼�ƥ�����������
188 // �饤�ȥޥåפζ���
189 #define SPECULAR_ADDING_LIGHT_RATIO	1.0f
190 
191 // ���դ����ѥƥ�����������뤵�ʶ⿧����
192 #define COLOR_GOLD_TEXTURE		1.5f
193 #define COLOR_GOLD_TEXTURE_R	1.0f
194 #define COLOR_GOLD_TEXTURE_G	0.7f
195 #define COLOR_GOLD_TEXTURE_B	0.15f
196 
197 // ������ξ������������ä���°���ѥƥ�������ο�
198 #define COLOR_CHROME2_TEXTURE	1.16f
199 #define COLOR_CHROME2_TEXTURE_R	1.0f
200 #define COLOR_CHROME2_TEXTURE_G	1.0f
201 #define COLOR_CHROME2_TEXTURE_B	0.75f
202 
203 // �饤�ȥ��꡼���°���ѥƥ�������ο�
204 #define COLOR_GREEN_TEXTURE		1.2f
205 #define COLOR_GREEN_TEXTURE_R	0.5f
206 #define COLOR_GREEN_TEXTURE_G	1.0f
207 #define COLOR_GREEN_TEXTURE_B	0.6f
208 
209 // �饤�ȥ֥롼��°���ѥƥ�������ο�
210 #define COLOR_BLUE_TEXTURE		1.3f
211 #define COLOR_BLUE_TEXTURE_R	0.8f
212 #define COLOR_BLUE_TEXTURE_G	0.8f
213 #define COLOR_BLUE_TEXTURE_B	1.0f
214 
215 // ��åɶ�°���ѥƥ�������ο�
216 #define COLOR_RED_TEXTURE		1.6f
217 #define COLOR_RED_TEXTURE_R		1.0f
218 #define COLOR_RED_TEXTURE_G		0.2f
219 #define COLOR_RED_TEXTURE_B		0.3f
220 
221 // �ԥ���°���ѥƥ�������ο�
222 #define COLOR_PINK_TEXTURE		1.0f
223 #define COLOR_PINK_TEXTURE_R	1.0f
224 #define COLOR_PINK_TEXTURE_G	0.6f
225 #define COLOR_PINK_TEXTURE_B	0.6f
226 
227 
228 // ������ƥ��������� �ˤο�
229 #define COLOR_CHROME_HOUR_R		0.8f
230 #define COLOR_CHROME_HOUR_G		0.8f
231 #define COLOR_CHROME_HOUR_B		1.0f
232 
233 #define COLOR_CHROME_MINUTE_R	0.5f
234 #define COLOR_CHROME_MINUTE_G	1.0f
235 #define COLOR_CHROME_MINUTE_B	0.6f
236 
237 #define COLOR_CHROME_SECOND_R	1.0f
238 #define COLOR_CHROME_SECOND_G	0.75f
239 #define COLOR_CHROME_SECOND_B	0.05f
240 
241 // ����¾�λ��׿ˤο�
242 #define COLOR_HOUR_R	0.8f
243 #define COLOR_HOUR_G	0.8f
244 #define COLOR_HOUR_B	1.0f
245 
246 // -solid ����
247 #define COLOR_HOUR_SOLID_R	0.6f
248 #define COLOR_HOUR_SOLID_G	0.5f
249 #define COLOR_HOUR_SOLID_B	1.0f
250 
251 #define COLOR_MINUTE_R	0.5f
252 #define COLOR_MINUTE_G	1.0f
253 #define COLOR_MINUTE_B	0.6f
254 
255 #define COLOR_SECOND_R	1.0f
256 #define COLOR_SECOND_G	0.75f
257 #define COLOR_SECOND_B	0.05f
258 
259 
260 // RGBA �ե����ޥåȻ��ѻ��Υ���ե���
261 #define DEFAULT_ALPHA		1.0f
262 
263 #ifndef VOODOO_MODE
264 #define SPEED		160.0f
265 #else
266 #define SPEED		160.0f
267 #endif	// #ifndef VOODOO_MODE
268 
269 //#define GIFF_DEMO
270 #define GIFF_DEMO_HOUR		3
271 #define GIFF_DEMO_MINUTE	55
272 #define GIFF_DEMO_SECOND	32
273 #define GIFF_SPIN_X			-10.0f
274 
275 // glclock ���᡼���ѥ�����Ķ��ѿ�
276 #define ENV_IMAGE_PATH		"GLCLOCK_IMAGE_PATH"
277 
278 // glut Game Mode String
279 #define DEFAULT_GAME_MODE_STRING	""
280 
281 // �ǥե���ȥ��᡼���ѥ�
282 //#define IMAGE_PATH			""
283 
284 // ���ԥ�ط������
285 #define SPIN_X		-18.0f
286 #define SPIN_Y		0.0f
287 
288 #define	SPIN_X_BENCH	-45.0f
289 
290 #ifdef GIFF_DEMO
291 #define ROTATE_Y	0.0f
292 #define ROTATE_X	0.0f
293 #else
294 #define ROTATE_Y		-30.0f
295 #define ROTATE_X		-14.0f
296 #endif
297 #define SAVER_ROTATE_Y	17.0f
298 #define BENCH_ROTATE_Y	0.0f
299 
300 #define N_ANTI					8
301 #define N_MOTION				6
302 #define N_FIELD					7
303 #define MAX_MOTION_N_SAMPLING	64
304 
305 #define METAL_RATIO	2.0f
306 
307 #define IS_SET_WIDTH	FALSE
308 #define IS_SET_HEIGHT	FALSE
309 
310 // glclockmark ���ơ�����
311 #define	GLCLOCK_MARK	0.0f
312 
313 // �ǥե���ȤΥѡ���
314 #define ZOOM		0.5f
315 
316 // �����꡼�����л��β�ž®��
317 #define SPIN_SPEED	1.0f
318 #define SPIN_RATIO	212.0f
319 #define SPIN_VELOC	3.5f
320 
321 // �����꡼�����л��λ��ץ�����
322 #define CLOCK_SIZE		0.6f
323 
324 // �������Ф��ƽ������
325 #define R_SPECULAR_MAP_GAMMA			0.3f	// -r �� ���ڥ���顼����
326 #define R_GLASS_SPECULAR_MAP_GAMMA		0.5f	// -r �� �ϥ��饤�ȥ��᡼��
327 #define SPECULAR_MAP_GAMMA				0.5f
328 
329 #define CRYSTAL_SPECULAR_MAP_GAMMA		0.3f
330 #define CRYSTAL_LIGHT_MAP_GAMMA			0.8f	// ���ꥹ����ϥ饤�ȥޥåפ��Ѳ���
331 #define CRYSTAL_SPECULAR_ADDING_ENV_RATIO	1.0f
332 #define CRYSTAL_SPECULAR_ADD				0.7f	// ���ꥹ�������Τ���������뤵
333 #define CRYSTAL_NEEDLE_SPECULAR_ADD			1.0f	// ���ꥹ����ˤ���������뤵��¾�˹�碌��ȿˤ��Ť��ʤ�᤮�뤿���
334 
335 #define IS_SET_DETAIL_MAP_GAMMA		0.0f
336 #define DETAIL_MAP_GAMMA_REAL		1.0f
337 #define DETAIL_MAP_GAMMA_ENV1		3.0f	// detail: 4
338 #define DETAIL_MAP_GAMMA_ENV2		0.4f	// detail: 5
339 
340 
341 // �ޥ���ƥ���������ѻ���ͽ�ᵱ�٤���
342 #define REALITY_SPECULAR_NA		1.0f	// == REALITY_SPECULAR_ONE_MINUS_COLOR
343 
344 // ��°���̥ƥ�������κ�����ٸ�����
345 #define CHROME_IMAGE_VIVIDNESS_RATIO	0.2f
346 
347 // �ʲ��ϥ�����������顼�Ȥ��ƥ��å�
348 #define MASTER_ENV_GLASS_BRIGHT_ADD		1.2f
349 
350 //#define ENV_GLASS_BRIGHT		(0.50f * MASTER_ENV_GLASS_BRIGHT_ADD)
351 //#define ENV_GLASS_BRIGHT_R		(0.37f * MASTER_ENV_GLASS_BRIGHT_ADD)
352 //#define ENV_GLASS_BRIGHT_REF	(0.53f * MASTER_ENV_GLASS_BRIGHT_ADD)
353 #define ENV_GLASS_BRIGHT		(0.60f * MASTER_ENV_GLASS_BRIGHT_ADD)
354 #define ENV_GLASS_BRIGHT_R		(0.45f * MASTER_ENV_GLASS_BRIGHT_ADD)
355 #define ENV_GLASS_BRIGHT_REF	(0.64f * MASTER_ENV_GLASS_BRIGHT_ADD)
356 
357 #define ENV_GLASS_BRIGHT_ONE_MINUS_COLOR		0.7f
358 #define ENV_GLASS_BRIGHT_REF_ONE_MINUS_COLOR	0.8f
359 
360 // ���ꥹ����Ǥ�ADD�֥��ɤ��������Ť��
361 #define CRYSTAL_GLASS_ADD_BRIGHT_RATIO	0.7f
362 
363 // -r ������Υǥե���ȤΥ��ڥ���顼�ʥƥ���������Ф������
364 #define REALITY_SPECULAR					0.5f
365 #define REALITY_SPECULAR_ONE_MINUS_COLOR	REALITY_SPECULAR_NA
366 
367 
368 // ADD �λ��θ��������Ѳ����Ф�����
369 // ���֤ˤ����������Ѳ����Ф���
370 // ���ڥ���顼���Ѳ����ޤ���
371 #define SPECULAR_TIME_GRAD_RATIO_REAL		0.3f
372 #define SPECULAR_TIME_GRAD_RATIO_ENV2		0.6f
373 #define SPECULAR_TIME_GRAD_RATIO_TEX_ENV	0.9f
374 
375 
376 // -R ���ץ�����ȿ���Τ����뤵�ʥ��ꥸ�ʥ���Ф������
377 //#define REFLECT_BLIGHT	0.6f
378 
379 
380 // FPS �׻�������ޤǤλ��֡ʥߥ��á�
381 #define FPS_CALC_WAIT			1000
382 #define FPS_CALC_WAIT_BENCH		3000
383 
384 struct FPSInfo
385 {
386 	int frameCount ;
387 	int mSecond ;
388 	int polygonCount ;
389 
390 	double fps ;
391 	double kTPS ;
392 
393 	double weightFPS ;
394 	double weightKTPS ;
395 } ;
396 
397 // �ޥ���ƥ���������Υƥ��������˥åȿ�����
398 #define LIMIT_MAX_TEXTURE_UNITS		0
399 
400 // �ǥե���ȥƥ������㥵�����ʣ��Τ٤����
401 #define DEFAULT_TEXTURE_SIZE			6
402 #define DEFAULT_TEXTURE_SIZE_MIPMAPTEST	8
403 
404 // �٥���ޡ����ƥ��Ȥι��ܿ�
405 #define N_GLCLOCK_MARK_LIGHT_TEST				24
406 #define NO_GLCLOCK_MARK_LIGHT_TEST				1.0
407 
408 #define N_GLCLOCK_MARK_LIGHT_TEX_TEST			6
409 #define NO_GLCLOCK_MARK_LIGHT_TEX_TEST			2.0
410 #define NO_GLCLOCK_MARK_LIGHT_TEX_SPECULAR_TEST	2.1
411 
412 #define N_GLCLOCK_MARK_FILTER_TEST		5
413 #define NO_GLCLOCK_MARK_FILTER_TEST		3.0
414 
415 #define N_GLCLOCK_MARK_FOG_TEST			4
416 #define NO_GLCLOCK_MARK_FOG_TEST		6.0
417 #define NO_GLCLOCK_MARK_FOG_TEX_TEST	6.1
418 
419 
420 // �ǥ��ƥ�����ƥ���������θ��������뤯
421 //#define BRIGHT_DETAIL_MODE		1.0987f
422 //#define BRIGHT_DETAIL_MODE		1.1457813f
423 
424 #define DRAW_DETAIL_FIRST_WALL	1
425 
426 #define BITS_RADIUS	11.2f
427 #define HDRN_RADIUS	11.0f
428 
429 #define ROOF_RAD	150.0f
430 #define ROOF_MOVE	11.0f
431 
432 #define QUALITY		5
433 #define ANTI		0
434 #define FIELD		0
435 #define DEPTH_OF_FIELD_RANGE	1.0f
436 #define MOTION		0
437 #define S_MOTION	0
438 #define SHUTTER		0.999f
439 #define S_SHUTTER	1.0f
440 
441 #define S_MOTION_ALPHA	(2.0f - (2.0f / s_motion))
442 #define PRE_S_MOTION_A	(2.0f - (2.0f / pre_s_motion))
443 
444 #define BG_COLOR	0
445 #define DITHER		1
446 
447 #define SOLID_SATURATION		1.0f
448 #define SOLID_CONTRAST			1.0f
449 
450 #define LIGHT					5
451 #define LIGHT_VIVIDNESS			1.0f
452 #define LIGHT_MASTER_VIVIDNESS	1.5f
453 #define LIGHT_MARK_VIVIDNESS	4.0f
454 
455 enum
456 {
457 	LIGHT_TYPE_DIRECTIONAL = 0,
458 	LIGHT_TYPE_POINT       = 1,
459 	LIGHT_TYPE_SPOT        = 2
460 } ;
461 
462 #define LIGHT_TYPE	LIGHT_TYPE_DIRECTIONAL
463 
464 #define POSITIONAL_LIGHT_DISTANCE		200.0f
465 #define POSITIONAL_LIGHT_CONST_ATTN		(0.0f)
466 #define POSITIONAL_LIGHT_LINEAR_ATTN	(0.0f / (POSITIONAL_LIGHT_DISTANCE))
467 #define POSITIONAL_LIGHT_QUAD_ATTN		(1.0f / ((POSITIONAL_LIGHT_DISTANCE) * (POSITIONAL_LIGHT_DISTANCE)))
468 #define SPOT_LIGHT_CUTOFF				60.0f
469 #define SPOT_LIGHT_EXPONENT				2.4f
470 
471 #define LOCAL_LIGHT_AMBIENT_RATIO	0.2f
472 
473 // ��ž�饤�ȥե饰��-1����ư��0��OFF��1��ON��
474 #define ROTATE_LIGHT	-1
475 
476 #define ENV_FILE	"sky.ppm"
477 #define LIGHT_FILE	"light.ppm"
478 #define SOLID_FILE	"wood.ppm"
479 #define SLD2_FILE	""
480 
481 #define IS_SET_DETAIL_FILE	""
482 #define DETAIL_FILE_REAL	"detail.pgm"
483 #define DETAIL_FILE_ENV		"detail2.pgm"
484 
485 #define FILTER_TEST_FILE	"filter.pgm"
486 #define ENV_TEX		0
487 #define SOLID_TEX	0
488 #define MIN_FILTER	"LL"
489 
490 #define MAX_ANISOTROPY	-1.0f
491 
492 #define SPECULAR		1.0f
493 #define MASTER_BRIGHT	1.0f
494 #define COLLECT_MASTER_BRIGHT	0.8f
495 #define COLLECT_NORMAL_BRIGHT	1.25f	// �̾���פΤ߾������뤯
496 
497 #define CRYSTAL		0
498 #define CRYSTAL_A	0.5f
499 #define POL_MODE	"F"
500 #define REALITY		0
501 #define REFLECTION	-1
502 #define DETAIL_TEX	-1
503 #define PERS_CORR	"D"
504 #define FOG_HINT	"D"
505 
506 #define TEX_SCALE	32.0f
507 #define FILTER_TEST_TEX_SCALE	6.4f
508 #define MIPMAP_TEST_TEX_SCALE	2.0f
509 
510 #define IS_SET_DETAIL_TEX_SCALE	0.0f
511 #define DETAIL_TEX_SCALE_REAL	6.0f
512 #define DETAIL_TEX_SCALE_ENV	8.0f
513 //#define DETAIL_TEX_SCALE		4.0f
514 
515 // ����åɥƥ�������κ�ɸ�ϲ�ž�ٿ�
516 #define TEX_ROTATE				20.0f
517 
518 #define ORG_IMAGE_TEX_ROTATE	0.0f
519 #define ORG_IMAGE_TEX_SCALE		29.0f
520 
521 #define TEX_SIZE	0
522 #define M_SLEEP		0
523 #define SLEEP_RATIO	0.0f
524 
525 #define U_SMOOTH	-1
526 #define V_SMOOTH	-1
527 #define G_SMOOTH	-1
528 
529 #define N_D_WIDTH	1.6f
530 #define N_WIDTH		1.0f
531 
532 #define N_HOUR_WIDTH		1.2f
533 #define N_MINUTE_WIDTH		0.7f
534 #define N_SECOND_WIDTH		0.35f
535 
536 //#define N_MINUTE_HEIGHT		0.6f
537 //#define N_SECOND_HEIGHT		1.5f
538 #define N_HOUR_HEIGHT		1.5f
539 #define N_MINUTE_HEIGHT		1.2f
540 #define N_SECOND_HEIGHT		1.1f
541 
542 #define N_HOUR_LENGTH		1.0f
543 #define N_MINUTE_LENGTH		1.4f
544 #define N_SECOND_LENGTH		1.7f
545 
546 #define N_HOUR_TRANS_Y		1.5f
547 #define N_MINUTE_TRANS_Y	2.3f
548 #define N_SECOND_TRANS_Y	0.5f
549 //#define N_HOUR_TRANS_Y		3.0f
550 //#define N_MINUTE_TRANS_Y	5.0f
551 //#define N_SECOND_TRANS_Y	4.0f
552 
553 #define N_HOUR_TRANS_Z		0.0f
554 #define N_MINUTE_TRANS_Z	1.2f
555 #define N_SECOND_TRANS_Z	1.8f
556 //#define N_SECOND_TRANS_Z	1.5f
557 
558 #define N_MIRROR_HEIGHT_RATIO	0.3f
559 
560 #define FOUT_FPS	""
561 #define FOUT_GL		""
562 
563 #define PRE_FPS_MESSAGE	""
564 
565 #define TEX_FORMAT					"GL_RGB8"
566 #define TEX_FORMAT_BENCHMARK		"GL_RGB"
567 #define TEX_FORMAT_COMPRESSED		"GL_COMPRESSED_RGB"
568 #define TEX_FORMAT_COMPRESSED_S3TC	"GL_COMPRESSED_RGB_S3TC_DXT1"
569 #define TEX_FORMAT_COMPRESSED_FXT1	"GL_COMPRESSED_RGB_FXT1"
570 
571 #define Z_OFFSET	0.0f
572 #define Z_OFFSET_TNT_FIX	0.1f
573 
574 #define SHELL_VTX	21
575 #define SHELL2_VTX	13
576 #define ROOF_VTX	7
577 #define ROOF2_VTX	5
578 #define M_VTX		9
579 
580 #define B_DIST		-80.0f
581 #define T_RATIO		0.2f
582 #define I_RATIO		0.8f
583 #define T_MAX		40.0f
584 #define P_MIN		0.05f
585 #define P_MAX		20.0f
586 #define IR_RATIO	0.95f
587 
588 #define BPPIXEL		0
589 
590 #define U_SMOOTH_FLAG	(u_smooth == -1 ? (divide >= 12) : u_smooth)
591 #define V_SMOOTH_T(t)	(v_smooth == -1 ? (t) : NULL)
592 
593 #define IS_SET_M_RATIO	(texture == 2 || solid)
594 #define SOLID_M_RATIO	(0.75f - solid * 0.1f)
595 #define METAL_R_M_RATIO	(reality ? 0.1f : SOLID_M_RATIO)
596 
597 //#define IS_SET_M_RATIO	(mode_env == 2 || mode_solid)
598 //#define SOLID_M_RATIO	(0.75f - mode_solid * 0.1f)
599 //#define METAL_R_M_RATIO	(mode_real ? 0.1f : SOLID_M_RATIO)
600 
601 // ��®�����ѥ���ץ���ե饰
602 #define	WITHOUT_ACCUM_BUFFER_SUPER_SAMPLING	(mode_solid == 1 || mode_env == 1 || mode_crystal)
603 
604 #define	ADDITIVE_ALPHA_SUPER_SAMPLING	(mode_crystal)
605 
606 // ˡ������ե饰��-solid 1 �ޤ��ϡ�normal �ǥ饤�ȿ����ξ�� FALSE��
607 #define	FLAG_GL_NORMAL	(!(mode_solid == 1 || (mode_normal && !light)))
608 
609 // ɽ�̥��饹�Υƥ��������ɸ�����-solid 1 �ξ��Τ� TRUE��
610 #define	FLAG_GLASS_TEX_COORD	(mode_solid == 1)
611 
612 // �������ǥ����Υƥ��������ɸ����ʳ̡�����ʸ���סˡ�-s 2, 3(13) -r 2(12)��
613 #define	FLAG_SHADE_TEX_COORD	(mode_solid ==2 || mode_solid == 3 || mode_solid == 13 || mode_real == 2 || mode_real == 12)
614 
615 // �������ǥ����Υƥ��������ɸ����ʶ���ꡢ�ˡ���ž�Ρˡ�-s 2, 3��
616 #define	FLAG_SHADE_TEX_COORD_ONLY_SOLID	(mode_solid ==2 || mode_solid == 3 || mode_solid == 13)
617 
618 // ��ǥ�졼�ȤΥƥ��������ɸ����ե饰��-solid 1��
619 #define	FLAG_MODULATE_TEX_COORD	(mode_solid == 1 || mode_real == 1)
620 
621 
622 // Detail Blend
623 #define DETAIL_BLEND	-1
624 enum
625 {
626 	DETAIL_BLEND_MULTIPLY_DST_BASE = 0,
627 	DETAIL_BLEND_MULTIPLY_SRC_BASE = 1,
628 } ;
629 
630 // Specular Blend
631 #define SPECULAR_BLEND	-1
632 enum
633 {
634 	SPECULAR_BLEND_ADD_SMOOTH	= 0,
635 	SPECULAR_BLEND_ADD			= 1,
636 } ;
637 
638 // �ե���
639 enum
640 {
641 	FOG_NONE	= 0,
642 	FOG_LINEAR	= 1,
643 	FOG_EXP		= 2,
644 	FOG_EXP2	= 3,
645 } ;
646 
647 //#define FOG_MODE		FOG_NONE
648 #define FOG_MODE		FOG_LINEAR
649 #define FOG_DENSITY		0.001f
650 #define FOG_MAX_RATIO	10.0f
651 #define FOG_START		0.0f
652 #define FOG_END			2048.0f
653 
654 #define FOG_MODE_SAVAGE2000		FOG_EXP
655 
656 // �����롼�פޤ��ϣ��ä�Ķ������ƣУӷ׻��ʥ٥���ޡ����⡼�ɰʳ���
657 #define F_COUNT			60
658 #define F_TIME_COUNT	1
659 
660 
661 // OpenGL�ɥ饤�Ф���ӥӥǥ������ɼ���
662 enum
663 {
664 	GENERIC, MESA_LIB,
665 	VOODOO_AUTO, VOODOO_MESA, VOODOO_MESA_OLD,
666 	VOODOO, VOODOO2, VOODOO2_SLI,
667 	VOODOO_RUSH, VOODOO_BANSHEE, VOODOO_3DFX_ICD,
668 	PERMEDIA2, SAVAGE2000, G400,
669 	RIVA, RIVA_TNT_FIX, WIN95_GDI_FIX,
670 } ;
671 
672 
673 struct TimeAngle
674 {
675 	float	hour, minute, second ;
676 } ;
677 
678 // ���ַ׻��ѹ�¤��
679 struct TimeData
680 {
681 	time_t	t ;
682 	struct	tm	*t_area ;
683 	int	n_hour, n_minute, n_second, p_hour, p_minute, p_second, fp_hour, fp_minute, fp_second ;
684 	TimeAngle angle ;
685 } ;
686 
687 struct ClockState
688 {
689 	TimeAngle tm ;
690 	GLfloat  h_rotate, g_spin, pers, clock_z, roof, y_pers ;
691 
692 	// �ÿˤ����Υ⡼�����֥顼�ѥ������ȳ��٤ȥ��ƥå׳���
693 	GLfloat  start_angle, step_angle ;
694 } ;
695 
696 
697 #define TIME_RESOLUTION		50
698 
699 // �ߥ���ñ�̻��֥��å�
GetMiliSeconds()700 inline int GetMiliSeconds()
701 {
702 #ifdef WIN32
703 //	return glutGet((GLenum)GLUT_ELAPSED_TIME) ;
704 	return timeGetTime() ;
705 
706 #else	// #ifdef WIN32
707 	return glutGet((GLenum)GLUT_ELAPSED_TIME) ;
708 
709 #endif	// #ifdef WIN32 ... #else
710 }
711 
712 
713 #ifdef WIN32
714 extern HINSTANCE hInstanceGlClock ;
715 #define ID_ICON_RESOURCE	100
716 #define	ICON_NO				0
717 #endif	// #ifdef WIN32
718 
719 
720 extern "C"
721 {
722 #ifdef WIN32
723 DLL_EXPORT BOOL CCONV DllMain(HANDLE, ULONG, LPVOID) ;
724 #endif
725 
726 DLL_EXPORT int CCONV glclock_opt(char *opt) ;
727 DLL_EXPORT int CCONV glclock_arg(int argc, char** argv) ;
728 }	// extern "C"
729 
730 int glclock(char *opt) ;
731 int glclock(int argc, char** argv) ;
732 
733 
734 // for fake sphere-mapping
735 // ����⡼���������ϰ��ڤʤ�
ScaleTranslateMatrixForFake()736 inline void ScaleTranslateMatrixForFake()
737 {
738 	glScalef(0.5f, 0.5f, 1.0f) ;
739 	glTranslatef(1.0f, 1.0f, 0.0f) ;
740 }
741 
742 
743 #endif	// #ifndef _GLCLOCK_H_
744