Rev 5392 | Rev 6523 | 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 |