Rev 6737 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6737 | Rev 8174 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | use32 |
1 | use32 |
2 | org 0x0 |
2 | org 0 |
3 | db 'MENUET01' |
3 | db 'MENUET01' |
4 | dd 1,start,i_end,mem,stacktop,0,cur_dir_path |
4 | dd 1,start,i_end,mem,stacktop,0,cur_dir_path |
Line 5... | Line 5... | ||
5 | 5 | ||
6 | include '../../../../../proc32.inc' |
6 | include '../../../../../proc32.inc' |
7 | include '../../../../../macros.inc' |
7 | include '../../../../../macros.inc' |
8 | include '../../../../../KOSfuncs.inc' |
8 | include '../../../../../KOSfuncs.inc' |
9 | include '../../../../../load_img.inc' |
9 | include '../../../../../load_img.inc' |
- | 10 | include '../opengl_const.inc' |
|
10 | include '../opengl_const.inc' |
11 | include '../zbuffer.inc' |
Line 11... | Line 12... | ||
11 | include '../../../../../develop/info3ds/info_fun_float.inc' |
12 | include '../../../../../develop/info3ds/info_fun_float.inc' |
Line 12... | Line 13... | ||
12 | 13 | ||
13 | @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load |
14 | @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load |
14 | 15 | ||
Line -... | Line 16... | ||
- | 16 | align 4 |
|
- | 17 | image_data_toolbar dd 0 |
|
15 | align 4 |
18 | IMAGE_TOOLBAR_ICON_SIZE equ 21*21*3 |
- | 19 | ||
- | 20 | ;Макрос для параметров типа double (8 байт) |
|
Line 16... | Line 21... | ||
16 | image_data_toolbar dd 0 |
21 | macro glpush GLDoubleVar { |
17 | IMAGE_TOOLBAR_ICON_SIZE equ 21*21*3 |
22 | push dword[GLDoubleVar+4] |
18 | 23 | push dword[GLDoubleVar] |
|
19 | offs_zbuf_pbuf equ 24 ;const. from 'zbuffer.inc' |
24 | } |
Line 36... | Line 41... | ||
36 | mcall SF_SET_EVENTS_MASK,0x27 |
41 | mcall SF_SET_EVENTS_MASK,0x27 |
Line 37... | Line 42... | ||
37 | 42 | ||
38 | stdcall [kosglMakeCurrent], 5,30,[buf_ogl.w],[buf_ogl.h],ctx1 |
43 | stdcall [kosglMakeCurrent], 5,30,[buf_ogl.w],[buf_ogl.h],ctx1 |
39 | stdcall [glEnable], GL_DEPTH_TEST |
44 | stdcall [glEnable], GL_DEPTH_TEST |
40 | stdcall [glEnable], GL_NORMALIZE ;делам нормали одинаковой величины во избежание артефактов |
45 | stdcall [glEnable], GL_NORMALIZE ;делам нормали одинаковой величины во избежание артефактов |
41 | stdcall [gluNewQuadric] |
46 | call [gluNewQuadric] |
Line 42... | Line 47... | ||
42 | mov [qObj],eax |
47 | mov [qObj],eax |
43 | 48 | ||
Line 44... | Line 49... | ||
44 | stdcall [glClearColor], 0.25,0.25,0.25,0.0 |
49 | stdcall [glClearColor], 0.25,0.25,0.25,0.0 |
45 | stdcall [glShadeModel], GL_SMOOTH |
50 | stdcall [glShadeModel], GL_SMOOTH |
46 | 51 | ||
47 | mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext |
52 | mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext |
Line 48... | Line 53... | ||
48 | mov eax,[eax] ;eax -> ZBuffer |
53 | mov eax,[eax] ;eax -> ZBuffer |
49 | mov eax,[eax+offs_zbuf_pbuf] ;eax -> ZBuffer.pbuf |
54 | mov eax,[eax+ZBuffer.pbuf] |
50 | mov dword[buf_ogl],eax |
55 | mov dword[buf_ogl],eax |
Line 94... | Line 99... | ||
94 | add ebx,IMAGE_TOOLBAR_ICON_SIZE |
99 | add ebx,IMAGE_TOOLBAR_ICON_SIZE |
95 | mcall ,,,(95 shl 16)+5 ;масштаб + |
100 | mcall ,,,(95 shl 16)+5 ;масштаб + |
96 | add ebx,IMAGE_TOOLBAR_ICON_SIZE |
101 | add ebx,IMAGE_TOOLBAR_ICON_SIZE |
97 | mcall ,,,(125 shl 16)+5 ;масштаб - |
102 | mcall ,,,(125 shl 16)+5 ;масштаб - |
Line 98... | Line 103... | ||
98 | 103 | ||
99 | stdcall [kosglSwapBuffers] |
104 | call [kosglSwapBuffers] |
100 | mcall SF_REDRAW,SSF_END_DRAW |
105 | mcall SF_REDRAW,SSF_END_DRAW |
101 | popad |
106 | popad |
Line 102... | Line 107... | ||
102 | ret |
107 | ret |
Line 128... | Line 133... | ||
128 | fstp qword[Data_Double] |
133 | fstp qword[Data_Double] |
129 | call DoubleFloat_to_String |
134 | call DoubleFloat_to_String |
130 | mov byte[txt_angle_y.v],0 |
135 | mov byte[txt_angle_y.v],0 |
131 | stdcall str_cat, txt_angle_y.v,Data_String |
136 | stdcall str_cat, txt_angle_y.v,Data_String |
132 | call draw_3d |
137 | call draw_3d |
133 | stdcall [kosglSwapBuffers] |
138 | call [kosglSwapBuffers] |
- | 139 | jmp still |
|
134 | @@: |
140 | @@: |
135 | cmp ah,177 ;Down |
141 | cmp ah,177 ;Down |
136 | jne @f |
142 | jne @f |
137 | finit |
143 | finit |
138 | fld dword[angle_y] |
144 | fld dword[angle_y] |
Line 142... | Line 148... | ||
142 | fstp qword[Data_Double] |
148 | fstp qword[Data_Double] |
143 | call DoubleFloat_to_String |
149 | call DoubleFloat_to_String |
144 | mov byte[txt_angle_y.v],0 |
150 | mov byte[txt_angle_y.v],0 |
145 | stdcall str_cat, txt_angle_y.v,Data_String |
151 | stdcall str_cat, txt_angle_y.v,Data_String |
146 | call draw_3d |
152 | call draw_3d |
147 | stdcall [kosglSwapBuffers] |
153 | call [kosglSwapBuffers] |
- | 154 | jmp still |
|
148 | @@: |
155 | @@: |
149 | cmp ah,176 ;Left |
156 | cmp ah,176 ;Left |
150 | jne @f |
157 | jne @f |
151 | finit |
158 | finit |
152 | fld dword[angle_z] |
159 | fld dword[angle_z] |
Line 156... | Line 163... | ||
156 | fstp qword[Data_Double] |
163 | fstp qword[Data_Double] |
157 | call DoubleFloat_to_String |
164 | call DoubleFloat_to_String |
158 | mov byte[txt_angle_z.v],0 |
165 | mov byte[txt_angle_z.v],0 |
159 | stdcall str_cat, txt_angle_z.v,Data_String |
166 | stdcall str_cat, txt_angle_z.v,Data_String |
160 | call draw_3d |
167 | call draw_3d |
161 | stdcall [kosglSwapBuffers] |
168 | call [kosglSwapBuffers] |
- | 169 | jmp still |
|
162 | @@: |
170 | @@: |
163 | cmp ah,179 ;Right |
171 | cmp ah,179 ;Right |
164 | jne @f |
172 | jne @f |
165 | finit |
173 | finit |
166 | fld dword[angle_z] |
174 | fld dword[angle_z] |
Line 170... | Line 178... | ||
170 | fstp qword[Data_Double] |
178 | fstp qword[Data_Double] |
171 | call DoubleFloat_to_String |
179 | call DoubleFloat_to_String |
172 | mov byte[txt_angle_z.v],0 |
180 | mov byte[txt_angle_z.v],0 |
173 | stdcall str_cat, txt_angle_z.v,Data_String |
181 | stdcall str_cat, txt_angle_z.v,Data_String |
174 | call draw_3d |
182 | call draw_3d |
175 | stdcall [kosglSwapBuffers] |
183 | call [kosglSwapBuffers] |
- | 184 | ;jmp still |
|
176 | @@: |
185 | @@: |
Line 177... | Line 186... | ||
177 | 186 | ||
Line 178... | Line 187... | ||
178 | jmp still |
187 | jmp still |
Line 214... | Line 223... | ||
214 | 223 | ||
215 | align 4 |
224 | align 4 |
216 | but_st_point: |
225 | but_st_point: |
217 | stdcall [gluQuadricDrawStyle], [qObj],GLU_POINT |
226 | stdcall [gluQuadricDrawStyle], [qObj],GLU_POINT |
218 | call draw_3d |
227 | call draw_3d |
219 | stdcall [kosglSwapBuffers] |
228 | call [kosglSwapBuffers] |
Line 220... | Line 229... | ||
220 | ret |
229 | ret |
221 | 230 | ||
222 | align 4 |
231 | align 4 |
223 | but_st_line: |
232 | but_st_line: |
224 | stdcall [gluQuadricDrawStyle], [qObj],GLU_LINE |
233 | stdcall [gluQuadricDrawStyle], [qObj],GLU_LINE |
225 | call draw_3d |
234 | call draw_3d |
Line 226... | Line 235... | ||
226 | stdcall [kosglSwapBuffers] |
235 | call [kosglSwapBuffers] |
227 | ret |
236 | ret |
228 | 237 | ||
229 | align 4 |
238 | align 4 |
230 | but_st_face: |
239 | but_st_face: |
231 | stdcall [gluQuadricDrawStyle], [qObj],GLU_FILL |
240 | stdcall [gluQuadricDrawStyle], [qObj],GLU_FILL |
Line 232... | Line 241... | ||
232 | call draw_3d |
241 | call draw_3d |
233 | stdcall [kosglSwapBuffers] |
242 | call [kosglSwapBuffers] |
234 | ret |
243 | ret |
Line 251... | Line 260... | ||
251 | fstp qword[Data_Double] |
260 | fstp qword[Data_Double] |
252 | call DoubleFloat_to_String |
261 | call DoubleFloat_to_String |
253 | mov byte[txt_scale.v],0 |
262 | mov byte[txt_scale.v],0 |
254 | stdcall str_cat, txt_scale.v,Data_String |
263 | stdcall str_cat, txt_scale.v,Data_String |
255 | call draw_3d |
264 | call draw_3d |
256 | stdcall [kosglSwapBuffers] |
265 | call [kosglSwapBuffers] |
257 | ret |
266 | ret |
Line 258... | Line 267... | ||
258 | 267 | ||
259 | align 4 |
268 | align 4 |
260 | but_zoom_m: |
269 | but_zoom_m: |
Line 274... | Line 283... | ||
274 | fstp qword[Data_Double] |
283 | fstp qword[Data_Double] |
275 | call DoubleFloat_to_String |
284 | call DoubleFloat_to_String |
276 | mov byte[txt_scale.v],0 |
285 | mov byte[txt_scale.v],0 |
277 | stdcall str_cat, txt_scale.v,Data_String |
286 | stdcall str_cat, txt_scale.v,Data_String |
278 | call draw_3d |
287 | call draw_3d |
279 | stdcall [kosglSwapBuffers] |
288 | call [kosglSwapBuffers] |
280 | ret |
289 | ret |
Line 281... | Line 290... | ||
281 | 290 | ||
282 | 291 | ||
283 | align 4 |
- | |
284 | caption db 'Test gluSphere, [Esc] - exit, [<-],[->],[Up],[Down] - rotate',0 |
- | |
285 | align 4 |
- | |
Line 286... | Line 292... | ||
286 | ctx1 db 28 dup (0) ;TinyGLContext or KOSGLContext |
292 | align 4 |
287 | ;sizeof.TinyGLContext = 28 |
293 | caption db 'Test gluSphere, [Esc] - exit, [<-],[->],[Up],[Down] - rotate',0 |
288 | 294 | ||
Line 289... | Line 295... | ||
289 | align 4 |
295 | align 4 |
290 | draw_3d: |
296 | draw_3d: |
Line 291... | Line 297... | ||
291 | stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины |
297 | stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины |
292 | 298 | ||
Line 306... | Line 312... | ||
306 | stdcall [gluSphere], [qObj], 0.55, 16,16 |
312 | stdcall [gluSphere], [qObj], 0.55, 16,16 |
Line 307... | Line 313... | ||
307 | 313 | ||
308 | stdcall [glColor3f], 0.0, 0.0, 1.0 |
314 | stdcall [glColor3f], 0.0, 0.0, 1.0 |
309 | stdcall [glTranslatef], 3.2,0.0,0.0 |
315 | stdcall [glTranslatef], 3.2,0.0,0.0 |
310 | stdcall [gluSphere], [qObj], 0.55, 16,16 |
316 | stdcall [gluSphere], [qObj], 0.55, 16,16 |
Line 311... | Line 317... | ||
311 | stdcall [glPopMatrix] |
317 | call [glPopMatrix] |
312 | 318 | ||
313 | stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_scale,5,5,0xffff00 |
319 | stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_scale,5,5,0xffff00 |
314 | stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_angle_z,5,15,0xffff00 |
320 | stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_angle_z,5,15,0xffff00 |
Line 331... | Line 337... | ||
331 | 337 | ||
332 | stdcall [glEnable],GL_LIGHTING |
338 | stdcall [glEnable],GL_LIGHTING |
333 | stdcall [glEnable],GL_LIGHT0 |
339 | stdcall [glEnable],GL_LIGHT0 |
Line 334... | Line -... | ||
334 | ret |
- | |
335 | - | ||
336 | qObj dd 0 |
340 | ret |
337 | 341 | ||
338 | scale dd 0.4 ;начальный масштаб |
342 | scale dd 0.4 ;начальный масштаб |
339 | sc_delt dd 0.05 ;изменение масштаба при нажатии |
343 | sc_delt dd 0.05 ;изменение масштаба при нажатии |
340 | sc_min dd 0.1 ;минимальный масштаб |
344 | sc_min dd 0.1 ;минимальный масштаб |
Line 422... | Line 426... | ||
422 | sz_buf2d_set_pixel db 'buf2d_set_pixel',0 |
426 | sz_buf2d_set_pixel db 'buf2d_set_pixel',0 |
Line 423... | Line 427... | ||
423 | 427 | ||
424 | align 4 |
428 | align 4 |
425 | import_libimg: |
429 | import_libimg: |
426 | dd alib_init1 |
430 | dd alib_init1 |
427 | img_is_img dd aimg_is_img |
431 | ; img_is_img dd aimg_is_img |
428 | img_info dd aimg_info |
432 | ; img_info dd aimg_info |
429 | img_from_file dd aimg_from_file |
433 | ; img_from_file dd aimg_from_file |
430 | img_to_file dd aimg_to_file |
434 | ; img_to_file dd aimg_to_file |
431 | img_from_rgb dd aimg_from_rgb |
435 | ; img_from_rgb dd aimg_from_rgb |
432 | img_to_rgb dd aimg_to_rgb |
436 | ; img_to_rgb dd aimg_to_rgb |
433 | img_to_rgb2 dd aimg_to_rgb2 |
437 | img_to_rgb2 dd aimg_to_rgb2 |
434 | img_decode dd aimg_decode |
438 | img_decode dd aimg_decode |
435 | img_encode dd aimg_encode |
439 | ; img_encode dd aimg_encode |
436 | img_create dd aimg_create |
440 | ; img_create dd aimg_create |
437 | img_destroy dd aimg_destroy |
441 | img_destroy dd aimg_destroy |
438 | img_destroy_layer dd aimg_destroy_layer |
442 | ; img_destroy_layer dd aimg_destroy_layer |
439 | img_count dd aimg_count |
443 | ; img_count dd aimg_count |
440 | img_lock_bits dd aimg_lock_bits |
444 | ; img_lock_bits dd aimg_lock_bits |
441 | img_unlock_bits dd aimg_unlock_bits |
445 | ; img_unlock_bits dd aimg_unlock_bits |
442 | img_flip dd aimg_flip |
446 | ; img_flip dd aimg_flip |
443 | img_flip_layer dd aimg_flip_layer |
447 | ; img_flip_layer dd aimg_flip_layer |
444 | img_rotate dd aimg_rotate |
448 | ; img_rotate dd aimg_rotate |
445 | img_rotate_layer dd aimg_rotate_layer |
449 | ; img_rotate_layer dd aimg_rotate_layer |
- | 450 | ; img_draw dd aimg_draw |
|
Line 446... | Line 451... | ||
446 | img_draw dd aimg_draw |
451 | ; img_convert dd aimg_convert |
447 | 452 | ||
448 | dd 0,0 |
453 | dd 0,0 |
449 | alib_init1 db 'lib_init',0 |
454 | alib_init1 db 'lib_init',0 |
450 | aimg_is_img db 'img_is_img',0 ;определяет по данным, может ли библиотека сделать из них изображение |
455 | ; aimg_is_img db 'img_is_img',0 ;определяет по данным, может ли библиотека сделать из них изображение |
451 | aimg_info db 'img_info',0 |
456 | ; aimg_info db 'img_info',0 |
452 | aimg_from_file db 'img_from_file',0 |
457 | ; aimg_from_file db 'img_from_file',0 |
453 | aimg_to_file db 'img_to_file',0 |
458 | ; aimg_to_file db 'img_to_file',0 |
454 | aimg_from_rgb db 'img_from_rgb',0 |
459 | ; aimg_from_rgb db 'img_from_rgb',0 |
455 | aimg_to_rgb db 'img_to_rgb',0 ;преобразование изображения в данные RGB |
460 | ; aimg_to_rgb db 'img_to_rgb',0 ;преобразование изображения в данные RGB |
456 | aimg_to_rgb2 db 'img_to_rgb2',0 |
461 | aimg_to_rgb2 db 'img_to_rgb2',0 |
457 | aimg_decode db 'img_decode',0 ;автоматически определяет формат графических данных |
462 | aimg_decode db 'img_decode',0 ;автоматически определяет формат графических данных |
458 | aimg_encode db 'img_encode',0 |
463 | ; aimg_encode db 'img_encode',0 |
459 | aimg_create db 'img_create',0 |
464 | ; aimg_create db 'img_create',0 |
460 | aimg_destroy db 'img_destroy',0 |
465 | aimg_destroy db 'img_destroy',0 |
461 | aimg_destroy_layer db 'img_destroy_layer',0 |
466 | ; aimg_destroy_layer db 'img_destroy_layer',0 |
462 | aimg_count db 'img_count',0 |
467 | ; aimg_count db 'img_count',0 |
463 | aimg_lock_bits db 'img_lock_bits',0 |
468 | ; aimg_lock_bits db 'img_lock_bits',0 |
464 | aimg_unlock_bits db 'img_unlock_bits',0 |
469 | ; aimg_unlock_bits db 'img_unlock_bits',0 |
465 | aimg_flip db 'img_flip',0 |
470 | ; aimg_flip db 'img_flip',0 |
466 | aimg_flip_layer db 'img_flip_layer',0 |
471 | ; aimg_flip_layer db 'img_flip_layer',0 |
467 | aimg_rotate db 'img_rotate',0 |
472 | ; aimg_rotate db 'img_rotate',0 |
- | 473 | ; aimg_rotate_layer db 'img_rotate_layer',0 |
|
Line 468... | Line 474... | ||
468 | aimg_rotate_layer db 'img_rotate_layer',0 |
474 | ; aimg_draw db 'img_draw',0 |
469 | aimg_draw db 'img_draw',0 |
475 | ; aimg_convert db 'img_convert',0 |
470 | 476 | ||
471 | ;-------------------------------------------------- |
477 | ;-------------------------------------------------- |
472 | system_dir_0 db '/sys/lib/' |
478 | system_dir_0 db '/sys/lib/' |
473 | lib_name_0 db 'tinygl.obj',0 |
479 | lib_name_0 db 'tinygl.obj',0 |
474 | system_dir_1 db '/sys/lib/' |
480 | system_dir_1 db '/sys/lib/' |
475 | lib_name_1 db 'buf2d.obj',0 |
481 | lib_name_1 db 'buf2d.obj',0 |
476 | system_dir_2 db '/sys/lib/' |
482 | system_dir_2 db '/sys/lib/' |
477 | lib_name_2 db 'libimg.obj',0 |
483 | lib_name_2 db 'libimg.obj',0 |
478 | err_msg_found_lib_0 db 'Sorry I cannot load library ',39,'tinygl.obj',39,0 |
484 | err_msg_found_lib_0 db 'Sorry I cannot load library ',39,'tinygl.obj',39,'" -tE',0 |
479 | err_msg_found_lib_1 db 'Sorry I cannot load library ',39,'buf2d.obj',39,0 |
485 | err_msg_found_lib_1 db 'Sorry I cannot load library ',39,'buf2d.obj',39,'" -tE',0 |
480 | err_msg_found_lib_2 db 'Sorry I cannot load library ',39,'libimg.obj',39,0 |
486 | err_msg_found_lib_2 db 'Sorry I cannot load library ',39,'libimg.obj',39,'" -tE',0 |
481 | head_f_i: |
487 | head_f_i: |
482 | head_f_l db 'System error',0 |
488 | head_f_l db '"System error',0 |
483 | err_msg_import_0 db 'Error on load import library ',39,'tinygl.obj',39,0 |
489 | err_msg_import_0 db 'Error on load import library ',39,'tinygl.obj',39,'" -tE',0 |
Line 484... | Line 490... | ||
484 | err_msg_import_1 db 'Error on load import library ',39,'buf2d.obj',39,0 |
490 | err_msg_import_1 db 'Error on load import library ',39,'buf2d.obj',39,'" -tE',0 |
485 | err_msg_import_2 db 'Error on load import library ',39,'libimg.obj',39,0 |
491 | err_msg_import_2 db 'Error on load import library ',39,'libimg.obj',39,'" -tE',0 |
486 | ;-------------------------------------------------- |
492 | ;-------------------------------------------------- |
Line 528... | Line 534... | ||
528 | err_msg_found_lib_2, head_f_l, import_libimg, err_msg_import_2, head_f_i |
534 | err_msg_found_lib_2, head_f_l, import_libimg, err_msg_import_2, head_f_i |
529 | l_libs_end: |
535 | l_libs_end: |
Line 530... | Line 536... | ||
530 | 536 | ||
531 | align 4 |
537 | align 4 |
- | 538 | i_end: |
|
- | 539 | ctx1 rb 28 ;sizeof.TinyGLContext = 28 |
|
532 | i_end: |
540 | qObj dd 0 |
533 | run_file_70 FileInfoBlock |
541 | run_file_70 FileInfoBlock |
534 | sc system_colors |
542 | sc system_colors |
535 | align 16 |
543 | align 16 |
536 | rb 4096 |
544 | rb 4096 |