Subversion Repositories Kolibri OS

Rev

Rev 5392 | Rev 6145 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5392 Rev 5418
Line 585... Line 585...
585
	cmp dword[edx+offs_cont_begin_type],GL_TRIANGLES
585
	cmp dword[edx+offs_cont_begin_type],GL_TRIANGLES
586
	jne @f
586
	jne @f
587
		cmp dword[n],3
587
		cmp dword[n],3
588
		jne .end_f
588
		jne .end_f
589
			mov eax,[edx+offs_cont_vertex]
589
			mov eax,[edx+offs_cont_vertex]
590
			mov [esp-4],eax
590
			mov [esp-12],eax
591
			add eax,sizeof.GLVertex
591
			add eax,sizeof.GLVertex
592
			mov [esp-8],eax
592
			mov [esp-8],eax
593
			add eax,sizeof.GLVertex
593
			add eax,sizeof.GLVertex
594
			mov [esp-12],eax
594
			mov [esp-4],eax
595
			sub esp,12
595
			sub esp,12
596
			stdcall gl_draw_triangle, edx
596
			stdcall gl_draw_triangle, edx ;v0,v1,v2
597
			xor eax,eax
597
			xor eax,eax
598
			mov dword[n],eax
598
			mov dword[n],eax
599
		jmp .end_f
599
		jmp .end_f
600
	@@:
600
	@@:
601
	cmp dword[edx+offs_cont_begin_type],GL_TRIANGLE_STRIP
601
	cmp dword[edx+offs_cont_begin_type],GL_TRIANGLE_STRIP
Line 609... Line 609...
609
			.ts3:
609
			.ts3:
610
			; needed to respect triangle orientation
610
			; needed to respect triangle orientation
611
			mov eax,[edx+offs_cont_vertex]
611
			mov eax,[edx+offs_cont_vertex]
612
			bt dword[edx+offs_cont_vertex_cnt],0
612
			bt dword[edx+offs_cont_vertex_cnt],0
613
			jc .case_1
613
			jc .case_1
614
				mov [esp-12],eax
614
				mov [esp-4],eax
615
				add eax,sizeof.GLVertex
615
				add eax,sizeof.GLVertex
616
				mov [esp-8],eax
616
				mov [esp-8],eax
617
				add eax,sizeof.GLVertex
617
				add eax,sizeof.GLVertex
618
				mov [esp-4],eax
618
				mov [esp-12],eax
619
				sub esp,12
619
				sub esp,12
620
				stdcall gl_draw_triangle, edx ;&v[2],&v[1],&v[0]
620
				stdcall gl_draw_triangle, edx ;v2,v1,v0
621
				jmp .end_f
621
				jmp .end_f
622
			.case_1:
622
			.case_1:
623
				mov [esp-4],eax
623
				mov [esp-12],eax
624
				add eax,sizeof.GLVertex
624
				add eax,sizeof.GLVertex
625
				mov [esp-8],eax
625
				mov [esp-8],eax
626
				add eax,sizeof.GLVertex
626
				add eax,sizeof.GLVertex
627
				mov [esp-12],eax
627
				mov [esp-4],eax
628
				sub esp,12
628
				sub esp,12
629
				stdcall gl_draw_triangle, edx ;&v[0],&v[1],&v[2]
629
				stdcall gl_draw_triangle, edx ;v0,v1,v2
630
		jmp .end_f
630
		jmp .end_f
631
	@@:
631
	@@:
632
	cmp dword[edx+offs_cont_begin_type],GL_TRIANGLE_FAN
632
	cmp dword[edx+offs_cont_begin_type],GL_TRIANGLE_FAN
633
	jne @f
633
	jne @f
634
		cmp dword[n],3
634
		cmp dword[n],3
635
		jne .end_f
635
		jne .end_f
636
			mov eax,[edx+offs_cont_vertex]
636
			mov eax,[edx+offs_cont_vertex]
637
			mov [esp-4],eax
637
			mov [esp-12],eax
638
			add eax,sizeof.GLVertex
638
			add eax,sizeof.GLVertex
639
			mov [esp-8],eax
639
			mov [esp-8],eax
640
			mov edi,eax
640
			mov edi,eax
641
			add eax,sizeof.GLVertex
641
			add eax,sizeof.GLVertex
642
			mov [esp-12],eax
642
			mov [esp-4],eax
643
			mov esi,eax
643
			mov esi,eax
644
			sub esp,12
644
			sub esp,12
645
			stdcall gl_draw_triangle, edx
645
			stdcall gl_draw_triangle, edx ;v0,v1,v2
646
			mov ecx,(sizeof.GLVertex)/4 ;((...)/4) что-бы использовать movsd вместо movsb
646
			mov ecx,(sizeof.GLVertex)/4 ;((...)/4) что-бы использовать movsd вместо movsb
647
			rep movsd ;context.vertex[1] = context.vertex[2]
647
			rep movsd ;context.vertex[1] = context.vertex[2]
648
			mov dword[n],2
648
			mov dword[n],2
649
		jmp .end_f
649
		jmp .end_f
650
	@@:
650
	@@:
Line 676... Line 676...
676
	cmp dword[edx+offs_cont_begin_type],GL_QUAD_STRIP
676
	cmp dword[edx+offs_cont_begin_type],GL_QUAD_STRIP
677
	jne @f
677
	jne @f
678
		cmp dword[n],4
678
		cmp dword[n],4
679
		jne .end_f
679
		jne .end_f
680
			mov eax,[edx+offs_cont_vertex]
680
			mov eax,[edx+offs_cont_vertex]
681
			mov [esp-4],eax
681
			mov [esp-12],eax
682
			mov edi,eax
682
			mov edi,eax
683
			add eax,sizeof.GLVertex
683
			add eax,sizeof.GLVertex
684
			mov [esp-8],eax
684
			mov [esp-8],eax
685
			add eax,sizeof.GLVertex
685
			add eax,sizeof.GLVertex
686
			mov [esp-12],eax
686
			mov [esp-4],eax
687
			mov esi,eax
687
			mov esi,eax
688
			sub esp,12
688
			sub esp,12
689
			stdcall gl_draw_triangle, edx ;v0,v1,v2
689
			stdcall gl_draw_triangle, edx ;v0,v1,v2
690
			mov [esp-12],eax
690
			mov [esp-4],eax
691
			add eax,sizeof.GLVertex
691
			add eax,sizeof.GLVertex
692
			mov [esp-8],eax
692
			mov [esp-8],eax
693
			sub eax,2*sizeof.GLVertex
693
			sub eax,2*sizeof.GLVertex
694
			mov [esp-4],eax
694
			mov [esp-12],eax
695
			sub esp,12
695
			sub esp,12
696
			stdcall gl_draw_triangle, edx ;v1,v3,v2
696
			stdcall gl_draw_triangle, edx ;v1,v3,v2
697
			mov ecx,(sizeof.GLVertex)/2 ;((...)/2) копируем 2 вершины
697
			mov ecx,(sizeof.GLVertex)/2 ;((...)/2) копируем 2 вершины
698
			rep movsd ;context.vertex[0] = context.vertex[2], context.vertex[1] = context.vertex[3]
698
			rep movsd ;context.vertex[0] = context.vertex[2], context.vertex[1] = context.vertex[3]
699
			mov dword[n],2
699
			mov dword[n],2