Subversion Repositories Kolibri OS

Rev

Rev 6081 | Rev 6510 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6081 Rev 6509
Line 23... Line 23...
23
	y_scale dd ?
23
	y_scale dd ?
24
	z_max dd ?
24
	z_max dd ?
25
	z_min dd ?
25
	z_min dd ?
26
	z_centr dd ?
26
	z_centr dd ?
27
	z_scale dd ?
27
	z_scale dd ?
-
 
28
	mat1_data dd ? ;¤ ­­ë¥ 1-£® ¬ â¥à¨ «  ¢ ®¡ê¥ªâ¥
28
ends
29
ends
Line 29... Line 30...
29
 
30
 
30
offs_obj_poi_data equ 0 ;㪠§ â¥«ì ­  ª®®à¤¨­ âë ¢¥à設
31
offs_obj_poi_data equ 0 ;㪠§ â¥«ì ­  ª®®à¤¨­ âë ¢¥à設
31
offs_obj_poi_count equ 4 ;ª®««¨ç¥á⢮ ¢¥à設
32
offs_obj_poi_count equ 4 ;ª®««¨ç¥á⢮ ¢¥à設
Line 45... Line 46...
45
offs_obj_y_scale equ 60
46
offs_obj_y_scale equ 60
46
offs_obj_z_max equ 64
47
offs_obj_z_max equ 64
47
offs_obj_z_min equ 68
48
offs_obj_z_min equ 68
48
offs_obj_z_centr equ 72
49
offs_obj_z_centr equ 72
49
offs_obj_z_scale equ 76
50
offs_obj_z_scale equ 76
-
 
51
offs_obj_mat1_data equ 80
Line 50... Line 52...
50
 
52
 
51
struct material
53
struct material
52
	name dd ?
54
	name dd ?
53
	col_ambient dd ? ;梥⠬ â¥à¨ « 
55
	col_ambient dd ? ;梥⠬ â¥à¨ « 
Line 62... Line 64...
62
 
64
 
63
bit_vertexes equ 0
65
bit_vertexes equ 0
64
bit_faces equ 1
66
bit_faces equ 1
65
bit_faces_fill equ 2
67
bit_faces_fill equ 2
-
 
68
bit_light equ 3
Line 66... Line 69...
66
bit_light equ 3
69
bit_faces_mat equ 4
67
 
70
 
68
ini_name db 'info3ds.ini',0
71
ini_name db 'info3ds.ini',0
69
ini_sec_w3d db 'Window 3d',0
72
ini_sec_w3d db 'Window 3d',0
Line 116... Line 119...
116
	mov dword[edi+offs_obj_poi_count],0
119
	mov dword[edi+offs_obj_poi_count],0
117
	mov dword[edi+offs_obj_tri_data],0
120
	mov dword[edi+offs_obj_tri_data],0
118
	mov dword[edi+offs_obj_tri_count],0
121
	mov dword[edi+offs_obj_tri_count],0
119
	mov dword[edi+offs_obj_normals_tri_count],0
122
	mov dword[edi+offs_obj_normals_tri_count],0
120
	mov dword[edi+offs_obj_normals_poi_count],0
123
	mov dword[edi+offs_obj_normals_poi_count],0
-
 
124
	mov dword[edi+offs_obj_mat1_data],0
121
	cmp dword[edi+offs_obj_normals_tri_data],0
125
	cmp dword[edi+offs_obj_normals_tri_data],0
122
	je @f
126
	je @f
123
		stdcall mem.Free,[edi+offs_obj_normals_tri_data]
127
		stdcall mem.Free,[edi+offs_obj_normals_tri_data]
124
		mov dword[edi+offs_obj_normals_tri_data],0
128
		mov dword[edi+offs_obj_normals_tri_data],0
125
	@@:
129
	@@:
Line 524... Line 528...
524
			;¥á«¨ ­ è«¨ âà¥ã£®«ì­¨ª¨
528
			;¥á«¨ ­ è«¨ âà¥ã£®«ì­¨ª¨
525
			movzx edx,word[esi+6]
529
			movzx edx,word[esi+6]
526
			mov [edi+offs_obj_tri_count],edx
530
			mov [edi+offs_obj_tri_count],edx
527
			add esi,8 ;2+4+2 (chunk+size+count)
531
			add esi,8 ;2+4+2 (chunk+size+count)
528
			mov [edi+offs_obj_tri_data],esi
532
			mov [edi+offs_obj_tri_data],esi
-
 
533
 
-
 
534
			;¯®¨áª ¬ â¥à¨ «®¢ £à ­¥©
-
 
535
			shl edx,3
-
 
536
			add esi,edx
-
 
537
			cmp word[esi],CHUNK_FACEMAT
-
 
538
			jne .end_points
-
 
539
				mov [edi+offs_obj_mat1_data],esi
529
		.end_points:
540
		.end_points:
Line 530... Line 541...
530
 
541
 
531
		stdcall obj_set_sizes, edi
542
		stdcall obj_set_sizes, edi
532
		stdcall obj_set_normals, edi
543
		stdcall obj_set_normals, edi
Line 537... Line 548...
537
	popad
548
	popad
538
	ret
549
	ret
539
endp
550
endp
Line 540... Line 551...
540
 
551
 
-
 
552
;­ áâனª  ¬ â¥à¨ « 
-
 
553
;input:
-
 
554
; m_data - 㪠§ â¥«ì ­  § ¯®«­ï¥¬ãî áâàãªâãàã á ¬ â¥à¨ «®¬
541
;­ áâனª  ¬ â¥à¨ « 
555
; f_data - 㪠§ â¥«ì­  ­  ¡«®ª CHUNK_MATERIAL ¨§ ä ©«  3ds
542
align 4
556
align 4
543
proc mat_init, m_data:dword
557
proc mat_init, m_data:dword, f_data:dword
544
	pushad
558
	pushad
Line 545... Line 559...
545
	mov edi,[m_data]
559
	mov edi,[m_data]
546
 
560
 
547
	;... clear edi ...
561
	;... clear edi ...
548
	mov dword[edi+offs_mat_name],0
562
	mov dword[edi+offs_mat_name],0
549
	mov dword[edi+offs_mat_col_ambient],0
563
	mov dword[edi+offs_mat_col_ambient],0
Line 550... Line -...
550
	mov dword[edi+offs_mat_col_diffuse],0
-
 
551
	mov dword[edi+offs_mat_col_specular],0
564
	mov dword[edi+offs_mat_col_diffuse],0
552
 
-
 
553
	stdcall [tl_node_get_data],tree1
-
 
554
	xor edx,edx
-
 
555
	cmp eax,0
565
	mov dword[edi+offs_mat_col_specular],0
556
	je .no_material
566
 
557
		mov ebx,[eax] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ë¡à ­­®£® ¡«®ª 
567
	xor edx,edx
558
		add ebx,[open_file_data]
568
	mov ebx,[f_data]
559
		xor ecx,ecx
569
	xor ecx,ecx
560
		cmp word[ebx],CHUNK_MATERIAL
570
	cmp word[ebx],CHUNK_MATERIAL
561
		jne .no_material
571
	jne .no_material
562
			mov ecx,ebx
572
		mov ecx,ebx
563
			add ecx,dword[ecx+2] ;£à ­¨æ  ¡«®ª 
573
		add ecx,dword[ecx+2] ;£à ­¨æ  ¡«®ª 
564
			add ebx,6
574
		add ebx,6
565
		cmp word[ebx],CHUNK_MATNAME
575
	cmp word[ebx],CHUNK_MATNAME
566
		jne .no_material
576
	jne .no_material
567
			;*** (0) ***
577
		;*** (0) ***
568
			mov esi,ebx
578
		mov esi,ebx
569
			add ebx,6
579
		add ebx,6
570
			mov [edi+offs_mat_name],ebx
580
		mov [edi+offs_mat_name],ebx
571
			sub ebx,6
581
		sub ebx,6
572
			;*** (1) ***
582
		;*** (1) ***
573
			.cycle_0: ;横« ¤«ï ¯®¨áª  æ¢¥â  ¬ â¥à¨ « 
583
		.cycle_0: ;横« ¤«ï ¯®¨áª  æ¢¥â  ¬ â¥à¨ « 
574
				add esi,dword[esi+2]
584
			add esi,dword[esi+2]
575
				cmp word[esi],0xa010
585
			cmp word[esi],0xa010
576
				je @f
586
			je @f
577
					cmp ecx,esi
587
				cmp ecx,esi
578
					jg .cycle_0 ;¯®ª  ­¥ ¤®á⨣­ãâ  £à­¨æ  áâ à襣® ¡«®ª 
588
				jg .cycle_0 ;¯®ª  ­¥ ¤®á⨣­ãâ  £à­¨æ  áâ à襣® ¡«®ª 
-
 
589
				jmp .end_material ;¥á«¨ ­¥ ­ è«¨ 梥⠬ â¥à¨ « 
-
 
590
		@@:
-
 
591
		;¥á«¨ ­ è«¨ 梥⠬ â¥à¨ « 
579
					jmp .end_material ;¥á«¨ ­¥ ­ è«¨ 梥⠬ â¥à¨ « 
592
		add esi,6
580
			@@:
-
 
581
			;¥á«¨ ­ è«¨ 梥⠬ â¥à¨ « 
-
 
582
			add esi,6
-
 
583
			cmp word[esi],0x0011
593
		cmp word[esi],0x0011
584
			jne .end_material
594
		jne .end_material
585
				add esi,6
595
			add esi,6
586
				mov dl,byte[esi]
596
			mov dl,byte[esi]
587
				mov [edi+offs_mat_col_ambient+2],dl
597
			mov [edi+offs_mat_col_ambient+2],dl
588
				mov dx,word[esi+1]
598
			mov dx,word[esi+1]
589
				ror dx,8
599
			ror dx,8
590
				mov [edi+offs_mat_col_ambient],dx
600
			mov [edi+offs_mat_col_ambient],dx
591
			;*** (2) ***
601
		;*** (2) ***
592
			mov esi,ebx
602
		mov esi,ebx
593
			.cycle_1: ;横« ¤«ï ¯®¨áª  æ¢¥â  ¬ â¥à¨ « 
603
		.cycle_1: ;横« ¤«ï ¯®¨áª  æ¢¥â  ¬ â¥à¨ « 
594
				add esi,dword[esi+2]
604
			add esi,dword[esi+2]
595
				cmp word[esi],0xa020
605
			cmp word[esi],0xa020
596
				je @f
606
			je @f
597
					cmp ecx,esi
607
				cmp ecx,esi
598
					jg .cycle_1 ;¯®ª  ­¥ ¤®á⨣­ãâ  £à­¨æ  áâ à襣® ¡«®ª 
608
				jg .cycle_1 ;¯®ª  ­¥ ¤®á⨣­ãâ  £à­¨æ  áâ à襣® ¡«®ª 
-
 
609
				jmp .end_material ;¥á«¨ ­¥ ­ è«¨ 梥⠬ â¥à¨ « 
-
 
610
		@@:
-
 
611
		;¥á«¨ ­ è«¨ 梥⠬ â¥à¨ « 
599
					jmp .end_material ;¥á«¨ ­¥ ­ è«¨ 梥⠬ â¥à¨ « 
612
		add esi,6
600
			@@:
-
 
601
			;¥á«¨ ­ è«¨ 梥⠬ â¥à¨ « 
-
 
602
			add esi,6
-
 
603
			cmp word[esi],0x0011
613
		cmp word[esi],0x0011
604
			jne .end_material
614
		jne .end_material
605
				add esi,6
615
			add esi,6
606
				mov dl,byte[esi]
616
			mov dl,byte[esi]
607
				mov [edi+offs_mat_col_diffuse+2],dl
617
			mov [edi+offs_mat_col_diffuse+2],dl
608
				mov dx,word[esi+1]
618
			mov dx,word[esi+1]
609
				ror dx,8
619
			ror dx,8
610
				mov [edi+offs_mat_col_diffuse],dx
620
			mov [edi+offs_mat_col_diffuse],dx
611
			;*** (3) ***
621
		;*** (3) ***
612
			mov esi,ebx
622
		mov esi,ebx
613
			.cycle_2: ;横« ¤«ï ¯®¨áª  æ¢¥â  ¬ â¥à¨ « 
623
		.cycle_2: ;横« ¤«ï ¯®¨áª  æ¢¥â  ¬ â¥à¨ « 
614
				add esi,dword[esi+2]
624
			add esi,dword[esi+2]
615
				cmp word[esi],0xa030
625
			cmp word[esi],0xa030
616
				je @f
626
			je @f
617
					cmp ecx,esi
627
				cmp ecx,esi
618
					jg .cycle_2 ;¯®ª  ­¥ ¤®á⨣­ãâ  £à­¨æ  áâ à襣® ¡«®ª 
628
				jg .cycle_2 ;¯®ª  ­¥ ¤®á⨣­ãâ  £à­¨æ  áâ à襣® ¡«®ª 
-
 
629
				jmp .end_material ;¥á«¨ ­¥ ­ è«¨ 梥⠬ â¥à¨ « 
-
 
630
		@@:
-
 
631
		;¥á«¨ ­ è«¨ 梥⠬ â¥à¨ « 
619
					jmp .end_material ;¥á«¨ ­¥ ­ è«¨ 梥⠬ â¥à¨ « 
632
		add esi,6
620
			@@:
-
 
621
			;¥á«¨ ­ è«¨ 梥⠬ â¥à¨ « 
-
 
622
			add esi,6
-
 
623
			cmp word[esi],0x0011
633
		cmp word[esi],0x0011
624
			jne .end_material
634
		jne .end_material
625
				add esi,6
635
			add esi,6
626
				mov dl,byte[esi]
636
			mov dl,byte[esi]
627
				mov [edi+offs_mat_col_specular+2],dl
637
			mov [edi+offs_mat_col_specular+2],dl
Line 628... Line 638...
628
				mov dx,word[esi+1]
638
			mov dx,word[esi+1]
629
				ror dx,8
639
			ror dx,8
630
				mov [edi+offs_mat_col_specular],dx
640
			mov [edi+offs_mat_col_specular],dx
631
 
641
 
632
			.end_material:
642
		.end_material:
Line 712... Line 722...
712
	stdcall [glRotatef], [angle_z],0.0,0.0,1.0
722
	stdcall [glRotatef], [angle_z],0.0,0.0,1.0
713
	stdcall [glRotatef], [angle_y],0.0,1.0,0.0
723
	stdcall [glRotatef], [angle_y],0.0,1.0,0.0
714
	stdcall [glRotatef], [angle_x],1.0,0.0,0.0
724
	stdcall [glRotatef], [angle_x],1.0,0.0,0.0
715
	stdcall [glTranslatef], [edi+offs_obj_x_centr],[edi+offs_obj_y_centr],[edi+offs_obj_z_centr]
725
	stdcall [glTranslatef], [edi+offs_obj_x_centr],[edi+offs_obj_y_centr],[edi+offs_obj_z_centr]
Line -... Line 726...
-
 
726
 
-
 
727
if version_edit eq 0
-
 
728
	;à¨á®¢ ­¨¥ £à ­¥© á ¨á¯®«ì§®¢ ­¨¥¬ 梥⮢ ¬ â¥à¨ «®¢
-
 
729
	bt dword[draw_mode],bit_faces_mat
-
 
730
	jnc @f
-
 
731
		mov eax,[edi+offs_obj_mat1_data]
-
 
732
		.b_found:
-
 
733
		cmp eax,0
-
 
734
		je .end_triangles
-
 
735
			mov ebx,eax
-
 
736
			stdcall get_mat_color, eax
-
 
737
			stdcall draw_3d_faces_color, edi,ebx,eax
-
 
738
			stdcall found_mat_faces, ebx
-
 
739
		jmp .b_found
-
 
740
	@@:
-
 
741
end if
716
 
742
 
717
	;à¨á®¢ ­¨¥ â®ç¥ª
743
	;à¨á®¢ ­¨¥ â®ç¥ª
718
	bt dword[draw_mode],bit_vertexes
744
	bt dword[draw_mode],bit_vertexes
719
	jnc .end_points
745
	jnc .end_points
720
		stdcall [glColor3ub],[color_vert+2],[color_vert+1],[color_vert]
746
		stdcall [glColor3ub],[color_vert+2],[color_vert+1],[color_vert]
Line 861... Line 887...
861
 
887
 
862
;¢ª«îç ¥¬ ०¨¬ à¨á®¢ ­¨ï ¢¥à設
888
;¢ª«îç ¥¬ ०¨¬ à¨á®¢ ­¨ï ¢¥à設
863
align 4
889
align 4
864
mnu_vertexes_on:
890
mnu_vertexes_on:
865
	or dword[draw_mode], 1 shl bit_vertexes
891
	or dword[draw_mode], 1 shl bit_vertexes
866
	and dword[draw_mode], not (1 shl bit_faces) ;¢ëª«îç ¥¬ ०¨¬ à¨á®¢ ­¨ï £à ­¥© (çâ®-¡ë ­¥ ¬¥è «¨)
892
	and dword[draw_mode], not ((1 shl bit_faces)+(1 shl bit_faces_mat)) ;¢ëª«îç ¥¬ ०¨¬ë à¨á®¢ ­¨ï, ª®â®àë¥ ¬®£ãâ ¬¥è âì
867
	call update_obj
893
	call update_obj
Line 868... Line 894...
868
	ret
894
	ret
869
 
895
 
870
;¢ª«îç ¥¬ ०¨¬ à¨á®¢ ­¨ï ª àª á­ëå £à ­¥©
896
;¢ª«îç ¥¬ ०¨¬ à¨á®¢ ­¨ï ª àª á­ëå £à ­¥©
871
align 4
897
align 4
872
mnu_edges_on:
898
mnu_edges_on:
873
	or dword[draw_mode], 1 shl bit_faces
899
	or dword[draw_mode], 1 shl bit_faces
874
	and dword[draw_mode], not ((1 shl bit_vertexes)+(1 shl bit_faces_fill))
900
	and dword[draw_mode], not ((1 shl bit_vertexes)+(1 shl bit_faces_fill)+(1 shl bit_faces_mat))
Line 875... Line 901...
875
	call update_obj
901
	call update_obj
876
	ret
902
	ret
877
 
903
 
878
;¢ª«îç ¥¬ ०¨¬ à¨á®¢ ­¨ï ᯫ®è­ëå £à ­¥©
904
;¢ª«îç ¥¬ ०¨¬ à¨á®¢ ­¨ï ᯫ®è­ëå £à ­¥©
879
align 4
905
align 4
880
mnu_faces_on:
906
mnu_faces_on:
881
	or dword[draw_mode], (1 shl bit_faces)+(1 shl bit_faces_fill)
907
	or dword[draw_mode], (1 shl bit_faces)+(1 shl bit_faces_fill)
Line 882... Line 908...
882
	and dword[draw_mode], not (1 shl bit_vertexes)
908
	and dword[draw_mode], not ((1 shl bit_vertexes)+(1 shl bit_faces_mat))
883
	call update_obj
909
	call update_obj
Line 906... Line 932...
906
	stdcall draw_3d, o3d
932
	stdcall draw_3d, o3d
907
	ret
933
	ret
Line 908... Line 934...
908
 
934
 
Line -... Line 935...
-
 
935
else
-
 
936
 
-
 
937
;¢ª«îç ¥¬ ०¨¬ à¨á®¢ ­¨ï ᯫ®è­ëå £à ­¥©
-
 
938
align 4
-
 
939
mnu_faces_mat:
-
 
940
	or dword[draw_mode], (1 shl bit_faces_mat)
-
 
941
	call update_obj
909
else
942
	ret
910
 
943
 
911
align 4
944
align 4
912
update_obj:
945
update_obj:
913
push eax ebx
946
push eax ebx
914
	stdcall [tl_node_get_data],tree1
947
	stdcall [tl_node_get_data],tree1
915
	cmp eax,0
948
	cmp eax,0
916
	je @f
949
	je @f
917
		mov ebx,dword[eax] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ë¡à ­­®£® ¡«®ª  ®â­®á¨â¥«ì­® ­ ç «  ä ©« 
950
		mov ebx,dword[eax] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ë¡à ­­®£® ¡«®ª  ®â­®á¨â¥«ì­® ­ ç «  ä ©« 
918
		add ebx,dword[open_file_data] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ ¯ ¬ïâ¨
951
		add ebx,dword[open_file_data] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ ¯ ¬ïâ¨
919
		cmp word[ebx],CHUNK_OBJBLOCK
952
		cmp word[ebx],CHUNK_OBJBLOCK
920
		jne @f
953
		jne @f
921
			add eax,14 ;14=list_offs_obj3d
954
			add eax,list_offs_obj3d
922
			stdcall draw_3d, eax
955
			stdcall draw_3d,eax
923
	@@:
956
	@@:
Line -... Line 957...
-
 
957
pop ebx eax
-
 
958
	ret
-
 
959
 
-
 
960
;input:
-
 
961
; p_mat - 㪠§ â¥«ì ­  ¤ ­­ë¥ ¯à¥¤ë¤ã饣® ¬ â¥à¨ « 
-
 
962
align 4
-
 
963
proc found_mat_faces uses ebx, p_mat:dword
-
 
964
	mov eax,[p_mat]
-
 
965
	add eax,[eax+2]
-
 
966
	cmp word[eax],CHUNK_FACEMAT
-
 
967
	je @f
-
 
968
		xor eax,eax
-
 
969
	@@:
-
 
970
	ret
-
 
971
endp
-
 
972
 
-
 
973
align 4
-
 
974
proc get_mat_color uses ebx ecx edx edi esi, p_mat:dword
-
 
975
	stdcall [tl_node_poi_get_info], tree1,0
-
 
976
	mov ecx,eax
-
 
977
	.cycle_0:
-
 
978
		cmp ecx,0
-
 
979
		je .cycle_0_end
-
 
980
			stdcall [tl_node_poi_get_data], tree1,ecx
-
 
981
			mov ebx,[eax] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ë¡à ­­®£® ¡«®ª 
-
 
982
			add ebx,[open_file_data]
-
 
983
			cmp word[ebx],CHUNK_MATERIAL
-
 
984
			jne .end_add_p3
-
 
985
			add eax,list_offs_obj3d
-
 
986
			mov esi,[eax+offs_mat_name]
-
 
987
			cmp esi,0
-
 
988
			jne @f
-
 
989
				;init material
-
 
990
				stdcall mat_init,eax,ebx
-
 
991
				mov esi,[eax+offs_mat_name]
-
 
992
			@@:
-
 
993
			mov edi,[p_mat]
-
 
994
			mov eax,5
-
 
995
			add edi,eax
-
 
996
align 4
-
 
997
			@@:
-
 
998
				cmp al,0
-
 
999
				je .found
-
 
1000
				lodsb
-
 
1001
				inc edi
-
 
1002
				cmp byte[edi],al
-
 
1003
				je @b
-
 
1004
		.end_add_p3:
-
 
1005
		stdcall [tl_node_poi_get_next_info], tree1,ecx
-
 
1006
		mov ecx,eax ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
-
 
1007
		jmp .cycle_0
-
 
1008
	.cycle_0_end:
-
 
1009
 
-
 
1010
	.no_found:
-
 
1011
		xor eax,eax
-
 
1012
		jmp .end_f
-
 
1013
	.found:
-
 
1014
		stdcall [tl_node_poi_get_data], tree1,ecx
-
 
1015
		add eax,list_offs_obj3d
-
 
1016
		mov eax,[eax+offs_mat_col_diffuse]
-
 
1017
	.end_f:
-
 
1018
	ret
-
 
1019
endp
-
 
1020
 
-
 
1021
align 4
-
 
1022
proc draw_3d_faces_color o_data:dword, p_mat:dword, color:dword
-
 
1023
pushad
-
 
1024
	stdcall [glPolygonMode], GL_FRONT_AND_BACK,GL_FILL
-
 
1025
	stdcall [glColor3ub],[color+2],[color+1],[color]
-
 
1026
	stdcall [glBegin],GL_TRIANGLES
-
 
1027
	mov edi,[o_data]
-
 
1028
	mov esi,[p_mat]
-
 
1029
	add esi,6
-
 
1030
	@@:
-
 
1031
		lodsb
-
 
1032
		cmp al,0
-
 
1033
		jne @b
-
 
1034
	movzx ecx,word[esi] ;ecx - ç¨á«® £à ­¥© á ¤ ­­ë¬ ¬ â¥à¨ «®¬
-
 
1035
	mov edx,[edi+offs_obj_poi_data]
-
 
1036
align 4
-
 
1037
	@@:
-
 
1038
		add esi,2
-
 
1039
		;word[esi] - ­®¬¥à âà¥ã£®«ì­¨ª 
-
 
1040
		movzx ebx,word[esi]
-
 
1041
		shl ebx,3
-
 
1042
		add ebx,[edi+offs_obj_tri_data]
-
 
1043
	
-
 
1044
		movzx eax,word[ebx] ;1-ï ¢¥à設 
-
 
1045
		imul eax,12 ;float(x,y,z)
-
 
1046
		add eax,edx
-
 
1047
		stdcall [glVertex3f], [eax],[eax+4],[eax+8]
-
 
1048
 
-
 
1049
		movzx eax,word[ebx+2] ;2-ï ¢¥à設 
-
 
1050
		imul eax,12 ;float(x,y,z)
-
 
1051
		add eax,edx
-
 
1052
		stdcall [glVertex3f], [eax],[eax+4],[eax+8]
-
 
1053
 
-
 
1054
		movzx eax,word[ebx+4] ;3-ï ¢¥à設 
-
 
1055
		imul eax,12 ;float(x,y,z)
-
 
1056
		add eax,edx
-
 
1057
		stdcall [glVertex3f], [eax],[eax+4],[eax+8]
-
 
1058
		
-
 
1059
		dec ecx
-
 
1060
		jnz @b
-
 
1061
	stdcall [glEnd]
-
 
1062
 
-
 
1063
.end_f:
-
 
1064
popad
924
pop ebx eax
1065
	ret
Line 925... Line 1066...
925
	ret
1066
endp
926
 
1067
 
927
end if
1068
end if