Rev 6510 | Rev 6889 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6510 | Rev 6513 | ||
---|---|---|---|
Line 61... | Line 61... | ||
61 | offs_mat_col_ambient equ 4 |
61 | offs_mat_col_ambient equ 4 |
62 | offs_mat_col_diffuse equ 8 |
62 | offs_mat_col_diffuse equ 8 |
63 | offs_mat_col_specular equ 12 |
63 | offs_mat_col_specular equ 12 |
Line 64... | Line 64... | ||
64 | 64 | ||
65 | bit_vertexes equ 0 |
65 | bit_vertexes equ 0 |
66 | bit_faces equ 1 |
66 | bit_faces equ 1 ;£à ¨ à¨áãîâáï ª®âãà ¬¨ |
67 | bit_faces_fill equ 2 |
67 | bit_faces_fill equ 2 ;£à ¨ á § «¨¢ª®© |
68 | bit_light equ 3 |
68 | bit_light equ 3 |
- | 69 | bit_faces_mat equ 4 ;£à ¨ á 梥⮬ ¬ â¥à¨ « |
|
Line 69... | Line 70... | ||
69 | bit_faces_mat equ 4 |
70 | bit_smooth equ 5 ;£à ¨ ᮠᣫ ¦¨¢ ¨¥¬ |
70 | 71 | ||
71 | ini_name db 'info3ds.ini',0 |
72 | ini_name db 'info3ds.ini',0 |
72 | ini_sec_w3d db 'Window 3d',0 |
73 | ini_sec_w3d db 'Window 3d',0 |
73 | key_dv db 'draw_vertices',0 |
74 | key_dv db 'draw_vertices',0 |
- | 75 | key_df db 'draw_faces',0 |
|
74 | key_df db 'draw_faces',0 |
76 | key_dff db 'draw_faces_fill',0 |
- | 77 | key_dfm db 'draw_faces_material',0 |
|
75 | key_dff db 'draw_faces_fill',0 |
78 | key_dl db 'draw_light',0 |
76 | key_dl db 'draw_light',0 |
79 | key_ds db 'draw_smooth',0 |
77 | key_ox db 'col_ox',0 |
80 | key_ox db 'col_ox',0 |
78 | key_oy db 'col_oy',0 |
81 | key_oy db 'col_oy',0 |
79 | key_oz db 'col_oz',0 |
82 | key_oz db 'col_oz',0 |
Line 344... | Line 347... | ||
344 | ret |
347 | ret |
345 | endp |
348 | endp |
Line 346... | Line 349... | ||
346 | 349 | ||
347 | ;description: |
350 | ;description: |
- | 351 | ; ¢ëç¨á«¥¨¥ ®à¬ «¥© ¤«ï £à ¥© ¯® 3-¬ ¢¥àè¨ ¬ |
|
348 | ; ¢ëç¨á«¥¨¥ ®à¬ «¥© ¤«ï £à ¥© ¯® 3-¬ ¢¥àè¨ ¬ |
352 | ; â ª¦¥ ®à¬ «¥© ¤«ï ᣫ ¦¨¢ ¨ï ª ¢¥àè¨ ¬ |
349 | align 4 |
353 | align 4 |
350 | proc obj_set_normals, o_data:dword |
354 | proc obj_set_normals, o_data:dword |
351 | locals |
355 | locals |
352 | tbl1 rd 9 ;ebp-72 |
356 | tbl1 rd 9 ;ebp-72 |
Line 447... | Line 451... | ||
447 | fld dword[esi+4] |
451 | fld dword[esi+4] |
448 | fmul dword[esi+24] |
452 | fmul dword[esi+24] |
449 | fsubp |
453 | fsubp |
450 | fstp dword[eax+8] ;set normal.c |
454 | fstp dword[eax+8] ;set normal.c |
Line -... | Line 455... | ||
- | 455 | ||
- | 456 | stdcall V3_Norm,eax |
|
451 | 457 | ||
452 | add edx,8 ;à §¬¥à âà¥ã£®«ì¨ª = (3 ¢¥àè¨ë (¯® 2¡) + ᢮©á⢠(2¡)) |
458 | add edx,8 ;à §¬¥à âà¥ã£®«ì¨ª = (3 ¢¥àè¨ë (¯® 2¡) + ᢮©á⢠(2¡)) |
453 | add eax,12 |
459 | add eax,12 |
454 | dec ebx |
460 | dec ebx |
- | 461 | jnz @b |
|
- | 462 | ||
- | 463 | ;®à¬ «¨ ª ¢¥àè¨ ¬ |
|
- | 464 | mov ebx,[o_data] |
|
- | 465 | mov ecx,[ebx+offs_obj_poi_count] |
|
- | 466 | mov [ebx+offs_obj_normals_poi_count],ecx |
|
- | 467 | cmp ecx,0 |
|
- | 468 | je .end |
|
- | 469 | imul ecx,12 |
|
- | 470 | stdcall mem.Alloc,ecx |
|
- | 471 | mov [ebx+offs_obj_normals_poi_data],eax |
|
- | 472 | ||
- | 473 | mov edi,eax |
|
- | 474 | mov eax,0.0 |
|
- | 475 | shr ecx,2 |
|
- | 476 | rep stosd ;®ç¨á⪠0-¬¨ float |
|
- | 477 | ||
- | 478 | mov edx,[ebx+offs_obj_tri_count] |
|
- | 479 | mov edi,[ebx+offs_obj_tri_data] |
|
- | 480 | mov eax,[ebx+offs_obj_normals_tri_data] |
|
- | 481 | mov ecx,[ebx+offs_obj_poi_data] |
|
- | 482 | mov ebx,[ebx+offs_obj_normals_poi_data] |
|
- | 483 | align 4 |
|
- | 484 | .cycle_0: ;¯® £à ï¬ |
|
- | 485 | movzx esi,word[edi] ;1-ï ¢¥àè¨ |
|
- | 486 | imul esi,12 |
|
- | 487 | add esi,ecx |
|
- | 488 | push esi |
|
- | 489 | movzx esi,word[edi+2] ;2-ï ¢¥àè¨ |
|
- | 490 | imul esi,12 |
|
- | 491 | add esi,ecx |
|
- | 492 | push esi |
|
- | 493 | movzx esi,word[edi+4] ;3-ï ¢¥àè¨ |
|
- | 494 | imul esi,12 |
|
- | 495 | add esi,ecx |
|
- | 496 | push esi |
|
- | 497 | ||
- | 498 | movzx esi,word[edi] ;1-ï ¢¥àè¨ |
|
- | 499 | imul esi,12 |
|
- | 500 | add esi,ebx |
|
- | 501 | push esi |
|
- | 502 | movzx esi,word[edi+2] ;2-ï ¢¥àè¨ |
|
- | 503 | imul esi,12 |
|
- | 504 | add esi,ebx |
|
- | 505 | push esi |
|
- | 506 | movzx esi,word[edi+4] ;3-ï ¢¥àè¨ |
|
- | 507 | imul esi,12 |
|
- | 508 | add esi,ebx |
|
- | 509 | push esi |
|
- | 510 | ||
- | 511 | stdcall poi_normal_add,eax |
|
- | 512 | ||
- | 513 | add edi,8 |
|
- | 514 | add eax,12 |
|
- | 515 | dec edx |
|
- | 516 | jnz .cycle_0 |
|
455 | jnz @b |
517 | .cycle_0_end: |
456 | .end: |
518 | .end: |
457 | popad |
519 | popad |
458 | ret |
520 | ret |
Line -... | Line 521... | ||
- | 521 | endp |
|
- | 522 | ||
- | 523 | ;input: |
|
- | 524 | ; norm_tr - 㪠§ â¥«ì ®à¬ «ì ª £à ¨ |
|
- | 525 | ; n1, n2, n3 - 㪠§ ⥫¨ ®à¬ «¨ ¢¥àè¨ |
|
- | 526 | ; c1, c2, c3 - 㪠§ ⥫¨ ª®®à¤¨ âë ¢¥àè¨ |
|
- | 527 | align 4 |
|
- | 528 | proc poi_normal_add uses eax ebx,\ |
|
- | 529 | norm_tr:dword, n1:dword, n2:dword, n3:dword, c1:dword, c2:dword, c3:dword |
|
- | 530 | ||
- | 531 | mov ebx,[norm_tr] |
|
- | 532 | ||
- | 533 | mov eax,[n1] |
|
- | 534 | fld dword[eax] |
|
- | 535 | fadd dword[ebx] |
|
- | 536 | fstp dword[eax] |
|
- | 537 | fld dword[eax+4] |
|
- | 538 | fadd dword[ebx+4] |
|
- | 539 | fstp dword[eax+4] |
|
- | 540 | fld dword[eax+8] |
|
- | 541 | fadd dword[ebx+8] |
|
- | 542 | fstp dword[eax+8] |
|
- | 543 | ||
- | 544 | mov eax,[n2] |
|
- | 545 | fld dword[eax] |
|
- | 546 | fadd dword[ebx] |
|
- | 547 | fstp dword[eax] |
|
- | 548 | fld dword[eax+4] |
|
- | 549 | fadd dword[ebx+4] |
|
- | 550 | fstp dword[eax+4] |
|
- | 551 | fld dword[eax+8] |
|
- | 552 | fadd dword[ebx+8] |
|
- | 553 | fstp dword[eax+8] |
|
- | 554 | ||
- | 555 | mov eax,[n3] |
|
- | 556 | fld dword[eax] |
|
- | 557 | fadd dword[ebx] |
|
- | 558 | fstp dword[eax] |
|
- | 559 | fld dword[eax+4] |
|
- | 560 | fadd dword[ebx+4] |
|
- | 561 | fstp dword[eax+4] |
|
- | 562 | fld dword[eax+8] |
|
- | 563 | fadd dword[ebx+8] |
|
- | 564 | fstp dword[eax+8] |
|
- | 565 | ||
- | 566 | ret |
|
- | 567 | endp |
|
- | 568 | ||
- | 569 | ;description: |
|
- | 570 | ; normalize vector |
|
- | 571 | align 4 |
|
- | 572 | proc V3_Norm uses eax ebx, a:dword |
|
- | 573 | mov ebx,[a] |
|
- | 574 | fld dword[ebx] |
|
- | 575 | fmul st0,st0 |
|
- | 576 | fld dword[ebx+4] |
|
- | 577 | fmul st0,st0 |
|
- | 578 | faddp |
|
- | 579 | fld dword[ebx+8] |
|
- | 580 | fmul st0,st0 |
|
- | 581 | faddp |
|
- | 582 | fsqrt ;st0 = sqrt(a.X^2 +a.Y^2 +a.Z^2) |
|
- | 583 | ftst |
|
- | 584 | fstsw ax |
|
- | 585 | sahf |
|
- | 586 | je .r1 ;if (sqrt(...)==0) return 1 |
|
- | 587 | fld dword[ebx] ;offs_X = 0 |
|
- | 588 | fdiv st0,st1 |
|
- | 589 | fstp dword[ebx] ;a.X/=sqrt(...) |
|
- | 590 | fld dword[ebx+4] |
|
- | 591 | fdiv st0,st1 |
|
- | 592 | fstp dword[ebx+4] ;a.Y/=sqrt(...) |
|
- | 593 | fld dword[ebx+8] |
|
- | 594 | fdiv st0,st1 |
|
- | 595 | fstp dword[ebx+8] ;a.Z/=sqrt(...) |
|
- | 596 | .r1: |
|
- | 597 | ffree st0 |
|
- | 598 | fincstp |
|
- | 599 | ret |
|
459 | endp |
600 | endp |
460 | 601 | ||
461 | ; áâனª áâàãªâãàë 3d ®¡ê¥ªâ |
602 | ; áâனª áâàãªâãàë 3d ®¡ê¥ªâ |
462 | align 4 |
603 | align 4 |
463 | proc obj_init, o_data:dword |
604 | proc obj_init, o_data:dword |
Line 676... | Line 817... | ||
676 | 817 | ||
677 | ;à¨á®¢ ¨¥ â®ç¥ª ¢ 3d |
818 | ;à¨á®¢ ¨¥ â®ç¥ª ¢ 3d |
678 | align 4 |
819 | align 4 |
679 | proc draw_3d uses eax ebx ecx edi, o_data:dword |
820 | proc draw_3d uses eax ebx ecx edi, o_data:dword |
680 | mov edi,[o_data] |
- | |
681 | if 0 ;debug |
- | |
682 | stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT |
- | |
683 | mov eax,[edi+offs_obj_poi_data] |
- | |
684 | stdcall convert_int_to_str, txt_select_vert.count,16 |
- | |
685 | stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_select_vert,5,3,[color_select] |
- | |
686 | stdcall [kosglSwapBuffers] |
- | |
687 | jmp .end_f |
- | |
688 | end if |
821 | mov edi,[o_data] |
689 | cmp dword[edi+offs_obj_poi_count],2 |
822 | cmp dword[edi+offs_obj_poi_count],2 |
690 | jl .end_f |
823 | jl .end_f |
691 | stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;®ç¨á⨬ ¡ãä¥à 梥⠨ £«ã¡¨ë |
824 | stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;®ç¨á⨬ ¡ãä¥à 梥⠨ £«ã¡¨ë |
692 | stdcall [glPushMatrix] |
825 | stdcall [glPushMatrix] |
Line 710... | Line 843... | ||
710 | bt dword[draw_mode],bit_faces_mat |
843 | bt dword[draw_mode],bit_faces_mat |
711 | jnc @f |
844 | jnc @f |
712 | mov eax,[edi+offs_obj_mat1_data] |
845 | mov eax,[edi+offs_obj_mat1_data] |
713 | .b_found: |
846 | .b_found: |
714 | cmp eax,0 |
847 | cmp eax,0 |
715 | je .end_triangles |
848 | je .end_points |
716 | mov ebx,eax |
849 | mov ebx,eax |
717 | stdcall get_mat_color, eax |
850 | stdcall get_mat_color, eax |
718 | stdcall draw_3d_faces_color, edi,ebx,eax |
851 | stdcall draw_3d_faces_color, edi,ebx,eax |
719 | stdcall found_mat_faces, ebx |
852 | stdcall found_mat_faces, ebx |
720 | jmp .b_found |
853 | jmp .b_found |
721 | @@: |
854 | @@: |
722 | end if |
855 | end if |
Line -... | Line 856... | ||
- | 856 | ||
- | 857 | ;à¨á®¢ ¨¥ £à ¥© ¡¥§ 梥⮢ ¬ â¥à¨ «®¢ |
|
- | 858 | bt dword[draw_mode],bit_faces |
|
- | 859 | jnc .end_triangles |
|
- | 860 | cmp dword[edi+offs_obj_tri_count],0 |
|
- | 861 | je .end_triangles |
|
- | 862 | cmp dword[edi+offs_obj_poi_count],0 |
|
- | 863 | je .end_triangles |
|
- | 864 | bt dword[draw_mode],bit_faces_fill |
|
- | 865 | jc @f |
|
- | 866 | push GL_LINE |
|
- | 867 | jmp .end_0 |
|
- | 868 | @@: |
|
- | 869 | push GL_FILL |
|
- | 870 | .end_0: |
|
- | 871 | stdcall [glPolygonMode], GL_FRONT_AND_BACK ;mode - 㦥 ¢ á⥪¥ |
|
- | 872 | stdcall [glColor3ub],[color_face+2],[color_face+1],[color_face] |
|
- | 873 | ||
- | 874 | bt dword[draw_mode],bit_smooth |
|
- | 875 | jnc .triangles_flat |
|
- | 876 | bt dword[draw_mode],bit_light |
|
- | 877 | jnc .triangles_flat |
|
- | 878 | ;triangles smooth |
|
- | 879 | stdcall [glBegin],GL_TRIANGLES |
|
- | 880 | mov eax,[edi+offs_obj_tri_data] |
|
- | 881 | mov ecx,[edi+offs_obj_tri_count] |
|
- | 882 | mov edx,[edi+offs_obj_normals_tri_data] |
|
- | 883 | align 4 |
|
- | 884 | @@: |
|
- | 885 | movzx ebx,word[eax] ;1-ï ¢¥àè¨ |
|
- | 886 | imul ebx,12 |
|
- | 887 | add ebx,[edi+offs_obj_normals_poi_data] |
|
- | 888 | stdcall [glNormal3fv], ebx |
|
- | 889 | sub ebx,[edi+offs_obj_normals_poi_data] |
|
- | 890 | add ebx,[edi+offs_obj_poi_data] |
|
- | 891 | stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8] |
|
- | 892 | movzx ebx,word[eax+2] ;2-ï ¢¥àè¨ |
|
- | 893 | imul ebx,12 |
|
- | 894 | add ebx,[edi+offs_obj_normals_poi_data] |
|
- | 895 | stdcall [glNormal3fv], ebx |
|
- | 896 | sub ebx,[edi+offs_obj_normals_poi_data] |
|
- | 897 | add ebx,[edi+offs_obj_poi_data] |
|
- | 898 | stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8] |
|
- | 899 | movzx ebx,word[eax+4] ;3-ï ¢¥àè¨ |
|
- | 900 | imul ebx,12 |
|
- | 901 | add ebx,[edi+offs_obj_normals_poi_data] |
|
- | 902 | stdcall [glNormal3fv], ebx |
|
- | 903 | sub ebx,[edi+offs_obj_normals_poi_data] |
|
- | 904 | add ebx,[edi+offs_obj_poi_data] |
|
- | 905 | stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8] |
|
- | 906 | add eax,8 ;à §¬¥à âà¥ã£®«ì¨ª = (3 ¢¥àè¨ë (¯® 2¡) + ᢮©á⢠(2¡)) |
|
- | 907 | dec ecx |
|
- | 908 | jnz @b |
|
- | 909 | stdcall [glEnd] |
|
- | 910 | jmp .end_points |
|
- | 911 | ||
- | 912 | .triangles_flat: |
|
- | 913 | stdcall [glBegin],GL_TRIANGLES |
|
- | 914 | mov eax,[edi+offs_obj_tri_data] |
|
- | 915 | mov ecx,[edi+offs_obj_tri_count] |
|
- | 916 | mov edx,[edi+offs_obj_normals_tri_data] |
|
- | 917 | align 4 |
|
- | 918 | @@: |
|
- | 919 | ; |
|
- | 920 | bt dword[draw_mode],bit_light |
|
- | 921 | jnc .norm1 |
|
- | 922 | stdcall [glNormal3fv], edx |
|
- | 923 | add edx,12 |
|
- | 924 | .norm1: |
|
- | 925 | movzx ebx,word[eax] ;1-ï ¢¥àè¨ |
|
- | 926 | imul ebx,12 |
|
- | 927 | add ebx,[edi+offs_obj_poi_data] |
|
- | 928 | stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8] |
|
- | 929 | movzx ebx,word[eax+2] ;2-ï ¢¥àè¨ |
|
- | 930 | imul ebx,12 |
|
- | 931 | add ebx,[edi+offs_obj_poi_data] |
|
- | 932 | stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8] |
|
- | 933 | movzx ebx,word[eax+4] ;3-ï ¢¥àè¨ |
|
- | 934 | imul ebx,12 |
|
- | 935 | add ebx,[edi+offs_obj_poi_data] |
|
- | 936 | stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8] |
|
- | 937 | add eax,8 ;à §¬¥à âà¥ã£®«ì¨ª = (3 ¢¥àè¨ë (¯® 2¡) + ᢮©á⢠(2¡)) |
|
- | 938 | dec ecx |
|
- | 939 | jnz @b |
|
- | 940 | stdcall [glEnd] |
|
- | 941 | jmp .end_points |
|
- | 942 | .end_triangles: |
|
723 | 943 | ||
724 | ;à¨á®¢ ¨¥ â®ç¥ª |
944 | ;à¨á®¢ ¨¥ â®ç¥ª |
725 | bt dword[draw_mode],bit_vertexes |
945 | bt dword[draw_mode],bit_vertexes |
726 | jnc .end_points |
946 | jnc .end_points |
727 | stdcall [glColor3ub],[color_vert+2],[color_vert+1],[color_vert] |
947 | stdcall [glColor3ub],[color_vert+2],[color_vert+1],[color_vert] |
728 | stdcall [glBegin],GL_POINTS |
948 | stdcall [glBegin],GL_POINTS |
729 | mov eax,[edi+offs_obj_poi_data] |
949 | mov eax,[edi+offs_obj_poi_data] |
- | 950 | mov ebx,[edi+offs_obj_poi_count] |
|
- | 951 | mov edx,[edi+offs_obj_normals_poi_data] |
|
730 | mov ebx,[edi+offs_obj_poi_count] |
952 | align 4 |
- | 953 | @@: |
|
- | 954 | bt dword[draw_mode],bit_light |
|
- | 955 | jnc .norm0 |
|
- | 956 | stdcall [glNormal3fv], edx |
|
- | 957 | add edx,12 |
|
731 | @@: |
958 | .norm0: |
732 | stdcall [glVertex3f], [eax],[eax+4],[eax+8] |
959 | stdcall [glVertex3f], [eax],[eax+4],[eax+8] |
733 | add eax,12 |
960 | add eax,12 |
734 | dec ebx |
961 | dec ebx |
735 | jnz @b |
962 | jnz @b |
Line 767... | Line 994... | ||
767 | cmp dword[obj_poi_sel_c],0 |
994 | cmp dword[obj_poi_sel_c],0 |
768 | je .end_select |
995 | je .end_select |
769 | mov ecx,dword[obj_poi_sel_c] |
996 | mov ecx,dword[obj_poi_sel_c] |
770 | stdcall [glColor3ub],[color_select+2],[color_select+1],[color_select] |
997 | stdcall [glColor3ub],[color_select+2],[color_select+1],[color_select] |
771 | stdcall dword[tl_node_poi_get_info], tree3,0 |
998 | stdcall dword[tl_node_poi_get_info], tree3,0 |
- | 999 | align 4 |
|
772 | @@: |
1000 | @@: |
773 | cmp eax,0 |
1001 | cmp eax,0 |
774 | je .end_select |
1002 | je .end_select |
775 | mov ebx,eax |
1003 | mov ebx,eax |
776 | cmp word[ebx],ID_ICON_POINT_SEL |
1004 | cmp word[ebx],ID_ICON_POINT_SEL |
Line 787... | Line 1015... | ||
787 | stdcall dword[tl_node_poi_get_next_info], tree3,ebx |
1015 | stdcall dword[tl_node_poi_get_next_info], tree3,ebx |
788 | jmp @b |
1016 | jmp @b |
789 | .end_select: |
1017 | .end_select: |
790 | end if |
1018 | end if |
Line 791... | Line -... | ||
791 | - | ||
792 | ;à¨á®¢ ¨¥ £à ¥© |
- | |
793 | bt dword[draw_mode],bit_faces |
- | |
794 | jnc .end_triangles |
- | |
795 | cmp dword[edi+offs_obj_tri_count],0 |
- | |
796 | je .end_triangles |
- | |
797 | cmp dword[edi+offs_obj_poi_count],0 |
- | |
798 | je .end_triangles |
- | |
799 | bt dword[draw_mode],bit_faces_fill |
- | |
800 | jc @f |
- | |
801 | push GL_LINE |
- | |
802 | jmp .end_0 |
- | |
803 | @@: |
- | |
804 | push GL_FILL |
- | |
805 | .end_0: |
- | |
806 | stdcall [glPolygonMode], GL_FRONT_AND_BACK ;mode - 㦥 ¢ á⥪¥ |
- | |
807 | stdcall [glColor3ub],[color_face+2],[color_face+1],[color_face] |
- | |
808 | stdcall [glBegin],GL_TRIANGLES |
- | |
809 | mov eax,[edi+offs_obj_tri_data] |
- | |
810 | mov ecx,[edi+offs_obj_tri_count] |
- | |
811 | mov edx,[edi+offs_obj_normals_tri_data] |
- | |
812 | @@: |
- | |
813 | ; |
- | |
814 | bt dword[draw_mode],bit_light |
- | |
815 | jnc .norm |
- | |
816 | stdcall [glNormal3fv], edx |
- | |
817 | add edx,12 |
- | |
818 | .norm: |
- | |
819 | ; |
- | |
820 | movzx ebx,word[eax] ;1-ï ¢¥àè¨ |
- | |
821 | imul ebx,12 |
- | |
822 | add ebx,[edi+offs_obj_poi_data] |
- | |
823 | stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8] |
- | |
824 | movzx ebx,word[eax+2] ;2-ï ¢¥àè¨ |
- | |
825 | imul ebx,12 |
- | |
826 | add ebx,[edi+offs_obj_poi_data] |
- | |
827 | stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8] |
- | |
828 | movzx ebx,word[eax+4] ;3-ï ¢¥àè¨ |
- | |
829 | imul ebx,12 |
- | |
830 | add ebx,[edi+offs_obj_poi_data] |
- | |
831 | stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8] |
- | |
832 | add eax,8 ;à §¬¥à âà¥ã£®«ì¨ª = (3 ¢¥àè¨ë (¯® 2¡) + ᢮©á⢠(2¡)) |
- | |
833 | dec ecx |
- | |
834 | jnz @b |
- | |
835 | stdcall [glEnd] |
- | |
836 | .end_triangles: |
- | |
837 | 1019 | ||
838 | stdcall [glPopMatrix] |
1020 | stdcall [glPopMatrix] |
839 | if version_edit eq 1 |
1021 | if version_edit eq 1 |
840 | cmp dword[obj_poi_sel_c],0 |
1022 | cmp dword[obj_poi_sel_c],0 |
841 | je @f |
1023 | je @f |
Line 895... | Line 1077... | ||
895 | xor dword[draw_mode], 1 shl bit_light |
1077 | xor dword[draw_mode], 1 shl bit_light |
896 | call update_obj |
1078 | call update_obj |
897 | ret |
1079 | ret |
Line 898... | Line 1080... | ||
898 | 1080 | ||
- | 1081 | align 4 |
|
- | 1082 | mnu_smooth_on_off: |
|
- | 1083 | xor dword[draw_mode], 1 shl bit_smooth |
|
- | 1084 | call update_obj |
|
- | 1085 | ret |
|
- | 1086 | ||
899 | align 4 |
1087 | align 4 |
900 | mnu_reset_settings: |
1088 | mnu_reset_settings: |
901 | mov dword[angle_x],0.0 |
1089 | mov dword[angle_x],0.0 |
902 | mov dword[angle_y],0.0 |
1090 | mov dword[angle_y],0.0 |
903 | mov dword[angle_z],0.0 |
1091 | mov dword[angle_z],0.0 |
Line 1011... | Line 1199... | ||
1011 | lodsb |
1199 | lodsb |
1012 | cmp al,0 |
1200 | cmp al,0 |
1013 | jne @b |
1201 | jne @b |
1014 | movzx ecx,word[esi] ;ecx - ç¨á«® £à ¥© á ¤ ë¬ ¬ â¥à¨ «®¬ |
1202 | movzx ecx,word[esi] ;ecx - ç¨á«® £à ¥© á ¤ ë¬ ¬ â¥à¨ «®¬ |
1015 | mov edx,[edi+offs_obj_poi_data] |
1203 | mov edx,[edi+offs_obj_poi_data] |
- | 1204 | ||
- | 1205 | bt dword[draw_mode],bit_smooth |
|
- | 1206 | jnc @f |
|
- | 1207 | bt dword[draw_mode],bit_light |
|
- | 1208 | jnc @f |
|
- | 1209 | align 4 |
|
- | 1210 | .cycle_0: |
|
- | 1211 | add esi,2 |
|
- | 1212 | ;word[esi] - ®¬¥à âà¥ã£®«ì¨ª |
|
- | 1213 | movzx ebx,word[esi] |
|
- | 1214 | ||
- | 1215 | shl ebx,3 |
|
- | 1216 | add ebx,[edi+offs_obj_tri_data] |
|
- | 1217 | ||
- | 1218 | movzx eax,word[ebx] ;1-ï ¢¥àè¨ |
|
- | 1219 | imul eax,12 ;float(x,y,z) |
|
- | 1220 | add eax,[edi+offs_obj_normals_poi_data] |
|
- | 1221 | stdcall [glNormal3fv], eax |
|
- | 1222 | sub eax,[edi+offs_obj_normals_poi_data] |
|
- | 1223 | add eax,edx |
|
- | 1224 | stdcall [glVertex3f], [eax],[eax+4],[eax+8] |
|
- | 1225 | ||
- | 1226 | movzx eax,word[ebx+2] ;2-ï ¢¥àè¨ |
|
- | 1227 | imul eax,12 ;float(x,y,z) |
|
- | 1228 | add eax,[edi+offs_obj_normals_poi_data] |
|
- | 1229 | stdcall [glNormal3fv], eax |
|
- | 1230 | sub eax,[edi+offs_obj_normals_poi_data] |
|
- | 1231 | add eax,edx |
|
- | 1232 | stdcall [glVertex3f], [eax],[eax+4],[eax+8] |
|
- | 1233 | ||
- | 1234 | movzx eax,word[ebx+4] ;3-ï ¢¥àè¨ |
|
- | 1235 | imul eax,12 ;float(x,y,z) |
|
- | 1236 | add eax,[edi+offs_obj_normals_poi_data] |
|
- | 1237 | stdcall [glNormal3fv], eax |
|
- | 1238 | sub eax,[edi+offs_obj_normals_poi_data] |
|
- | 1239 | add eax,edx |
|
- | 1240 | stdcall [glVertex3f], [eax],[eax+4],[eax+8] |
|
- | 1241 | ||
- | 1242 | dec ecx |
|
- | 1243 | jnz .cycle_0 |
|
- | 1244 | stdcall [glEnd] |
|
- | 1245 | jmp .end_f |
|
- | 1246 | ||
1016 | align 4 |
1247 | align 4 |
1017 | @@: |
1248 | @@: |
1018 | add esi,2 |
1249 | add esi,2 |
1019 | ;word[esi] - ®¬¥à âà¥ã£®«ì¨ª |
1250 | ;word[esi] - ®¬¥à âà¥ã£®«ì¨ª |
1020 | movzx ebx,word[esi] |
1251 | movzx ebx,word[esi] |