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