Subversion Repositories Kolibri OS

Rev

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

Rev 6243 Rev 6523
Line 17... Line 17...
17
	fld1
17
	fld1
18
	fdiv dword[ebx+offs_vert_pc+offs_W] ;st0 = 1/v.pc.W
18
	fdiv dword[ebx+offs_vert_pc+offs_W] ;st0 = 1/v.pc.W
Line 19... Line 19...
19
 
19
 
20
	fld dword[ebx+offs_vert_pc+offs_X] ;st0 = v.pc.X
20
	fld dword[ebx+offs_vert_pc+offs_X] ;st0 = v.pc.X
21
	fmul st0,st1
21
	fmul st0,st1
22
	fmul dword[eax+offs_cont_viewport+offs_vpor_scale+offs_X]
22
	fmul dword[eax+GLContext.viewport+offs_vpor_scale+offs_X]
23
	fadd dword[eax+offs_cont_viewport+offs_vpor_trans+offs_X]
23
	fadd dword[eax+GLContext.viewport+offs_vpor_trans+offs_X]
Line 24... Line 24...
24
	fistp dword[ebx+offs_vert_zp] ;v.zp.x = st0, st0 = st1
24
	fistp dword[ebx+offs_vert_zp] ;v.zp.x = st0, st0 = st1
25
 
25
 
26
	fld dword[ebx+offs_vert_pc+offs_Y] ;st0 = v.pc.Y
26
	fld dword[ebx+offs_vert_pc+offs_Y] ;st0 = v.pc.Y
27
	fmul st0,st1
27
	fmul st0,st1
28
	fmul dword[eax+offs_cont_viewport+offs_vpor_scale+offs_Y]
28
	fmul dword[eax+GLContext.viewport+offs_vpor_scale+offs_Y]
Line 29... Line 29...
29
	fadd dword[eax+offs_cont_viewport+offs_vpor_trans+offs_Y]
29
	fadd dword[eax+GLContext.viewport+offs_vpor_trans+offs_Y]
30
	fistp dword[ebx+offs_vert_zp+offs_zbup_y] ;v.zp.y = st0, st0 = st1
30
	fistp dword[ebx+offs_vert_zp+offs_zbup_y] ;v.zp.y = st0, st0 = st1
31
 
31
 
32
	fld dword[ebx+offs_vert_pc+offs_Z] ;st0 = v.pc.Z
32
	fld dword[ebx+offs_vert_pc+offs_Z] ;st0 = v.pc.Z
33
	fmulp
33
	fmulp
Line 34... Line 34...
34
	fmul dword[eax+offs_cont_viewport+offs_vpor_scale+offs_Z]
34
	fmul dword[eax+GLContext.viewport+offs_vpor_scale+offs_Z]
35
	fadd dword[eax+offs_cont_viewport+offs_vpor_trans+offs_Z]
35
	fadd dword[eax+GLContext.viewport+offs_vpor_trans+offs_Z]
36
	fistp dword[ebx+offs_vert_zp+offs_zbup_z] ;v.zp.z = st0, st0 = st1
36
	fistp dword[ebx+offs_vert_zp+offs_zbup_z] ;v.zp.z = st0, st0 = st1
37
 
37
 
38
	; color
38
	; color
39
	cmp dword[eax+offs_cont_lighting_enabled],0 ;if (context.lighting_enabled)
39
	cmp dword[eax+GLContext.lighting_enabled],0 ;if (context.lighting_enabled)
40
	je @f
40
	je @f
Line 48... Line 48...
48
		stdcall RGBFtoRGBI, dword[ebx+offs_vert_color],dword[ebx+offs_vert_color+4],dword[ebx+offs_vert_color+8]
48
		stdcall RGBFtoRGBI, dword[ebx+offs_vert_color],dword[ebx+offs_vert_color+4],dword[ebx+offs_vert_color+8]
49
		jmp .end_if
49
		jmp .end_if
50
align 4
50
align 4
51
	@@:
51
	@@:
52
		; no need to convert to integer if no lighting : take current color
52
		; no need to convert to integer if no lighting : take current color
53
		mov ecx,[eax+offs_cont_longcurrent_color]
53
		mov ecx,[eax+GLContext.longcurrent_color]
54
		mov dword[ebx+offs_vert_zp+offs_zbup_r],ecx
54
		mov dword[ebx+offs_vert_zp+offs_zbup_r],ecx
55
		mov ecx,[eax+offs_cont_longcurrent_color+4]
55
		mov ecx,[eax+GLContext.longcurrent_color+4]
56
		mov dword[ebx+offs_vert_zp+offs_zbup_g],ecx
56
		mov dword[ebx+offs_vert_zp+offs_zbup_g],ecx
57
		mov ecx,[eax+offs_cont_longcurrent_color+8]
57
		mov ecx,[eax+GLContext.longcurrent_color+8]
58
		mov dword[ebx+offs_vert_zp+offs_zbup_b],ecx
58
		mov dword[ebx+offs_vert_zp+offs_zbup_b],ecx
59
	.end_if:
59
	.end_if:
Line 60... Line 60...
60
  
60
  
61
	; texture
61
	; texture
62
	cmp dword[eax+offs_cont_texture_2d_enabled],0
62
	cmp dword[eax+GLContext.texture_2d_enabled],0
63
	je @f
63
	je @f
64
		mov eax,[eax+offs_cont_current_texture] ;eax = &context.current_texture
64
		mov eax,[eax+GLContext.current_texture] ;eax = &context.current_texture
65
		mov eax,[eax] ;eax = context.current_texture
65
		mov eax,[eax] ;eax = context.current_texture
Line 66... Line 66...
66
		;[eax+offs_text_images] = im = &context.current_texture.images[0]
66
		;[eax+offs_text_images] = im = &context.current_texture.images[0]
67
 
67
 
Line 114... Line 114...
114
proc gl_draw_point uses eax ebx, context:dword, p0:dword
114
proc gl_draw_point uses eax ebx, context:dword, p0:dword
115
	mov ebx,[p0]
115
	mov ebx,[p0]
116
	cmp dword[ebx+offs_vert_clip_code],0 ;if (p0.clip_code == 0)
116
	cmp dword[ebx+offs_vert_clip_code],0 ;if (p0.clip_code == 0)
117
	jne @f
117
	jne @f
118
	mov eax,[context]
118
	mov eax,[context]
119
	cmp dword[eax+offs_cont_render_mode],GL_SELECT
119
	cmp dword[eax+GLContext.render_mode],GL_SELECT
120
	jne .els
120
	jne .els
121
		stdcall gl_add_select, eax,dword[ebx+offs_vert_zp+offs_zbup_z],dword[ebx+offs_vert_zp+offs_zbup_z] ;p0.zp.z,p0.zp.z
121
		stdcall gl_add_select, eax,dword[ebx+offs_vert_zp+offs_zbup_z],dword[ebx+offs_vert_zp+offs_zbup_z] ;p0.zp.z,p0.zp.z
122
		jmp @f
122
		jmp @f
123
align 4
123
align 4
124
	.els:
124
	.els:
125
		add ebx,offs_vert_zp
125
		add ebx,offs_vert_zp
126
		stdcall ZB_plot, dword[eax+offs_cont_zb],ebx
126
		stdcall ZB_plot, dword[eax+GLContext.zb],ebx
127
	@@:
127
	@@:
128
	ret
128
	ret
129
endp
129
endp
Line 130... Line 130...
130
 
130
 
Line 283... Line 283...
283
	cmp dword[edi+offs_vert_clip_code],0
283
	cmp dword[edi+offs_vert_clip_code],0
284
	jne .els_i
284
	jne .els_i
285
	cmp dword[esi+offs_vert_clip_code],0
285
	cmp dword[esi+offs_vert_clip_code],0
286
	jne .els_i
286
	jne .els_i
287
		;if ( (p1.clip_code | p2.clip_code) == 0)
287
		;if ( (p1.clip_code | p2.clip_code) == 0)
288
		cmp dword[edx+offs_cont_render_mode],GL_SELECT ;if (context.render_mode == GL_SELECT)
288
		cmp dword[edx+GLContext.render_mode],GL_SELECT ;if (context.render_mode == GL_SELECT)
289
		jne .els_1
289
		jne .els_1
290
			stdcall gl_add_select1, edx,dword[edi+offs_vert_zp+offs_zbup_z],\
290
			stdcall gl_add_select1, edx,dword[edi+offs_vert_zp+offs_zbup_z],\
291
				dword[esi+offs_vert_zp+offs_zbup_z],dword[esi+offs_vert_zp+offs_zbup_z]
291
				dword[esi+offs_vert_zp+offs_zbup_z],dword[esi+offs_vert_zp+offs_zbup_z]
292
			jmp .end_f
292
			jmp .end_f
293
align 4
293
align 4
294
		.els_1:
294
		.els_1:
295
			add edi,offs_vert_zp
295
			add edi,offs_vert_zp
296
			add esi,offs_vert_zp
296
			add esi,offs_vert_zp
297
			push esi
297
			push esi
298
			push edi
298
			push edi
299
			push dword[edx+offs_cont_zb]
299
			push dword[edx+GLContext.zb]
300
			cmp dword[edx+offs_cont_depth_test],0
300
			cmp dword[edx+GLContext.depth_test],0
301
			je .els_2
301
			je .els_2
302
				;if (context.depth_test)
302
				;if (context.depth_test)
303
				call ZB_line_z ;, dword[edx+offs_cont_zb],edi,esi
303
				call ZB_line_z ;, dword[edx+GLContext.zb],edi,esi
304
				jmp .end_f
304
				jmp .end_f
305
align 4
305
align 4
306
			.els_2:
306
			.els_2:
307
				call ZB_line ;, dword[edx+offs_cont_zb],edi,esi
307
				call ZB_line ;, dword[edx+GLContext.zb],edi,esi
308
				jmp .end_f
308
				jmp .end_f
309
align 4
309
align 4
310
	.els_i:
310
	.els_i:
311
		;else if ( (p1.clip_code & p2.clip_code) != 0 )
311
		;else if ( (p1.clip_code & p2.clip_code) != 0 )
312
		mov eax,[edi+offs_vert_clip_code]
312
		mov eax,[edi+offs_vert_clip_code]
Line 449... Line 449...
449
 
449
 
450
	add eax,offs_vert_zp ;eax = &q2.zp
450
	add eax,offs_vert_zp ;eax = &q2.zp
451
	push eax
451
	push eax
452
	sub eax,sizeof.GLVertex ;eax = &q1.zp
452
	sub eax,sizeof.GLVertex ;eax = &q1.zp
453
	push eax
453
	push eax
454
	push dword[edx+offs_cont_zb]
454
	push dword[edx+GLContext.zb]
455
	cmp dword[edx+offs_cont_depth_test],0
455
	cmp dword[edx+GLContext.depth_test],0
456
	je .els_3
456
	je .els_3
457
		call ZB_line_z ;(context.zb,&q1.zp,&q2.zp)
457
		call ZB_line_z ;(context.zb,&q1.zp,&q2.zp)
458
		jmp .end_f
458
		jmp .end_f
459
align 4
459
align 4
Line 590... Line 590...
590
;edi - q
590
;edi - q
591
align 16
591
align 16
592
proc updateTmp uses eax ecx edx, context:dword, p0:dword, p1:dword, t:dword
592
proc updateTmp uses eax ecx edx, context:dword, p0:dword, p1:dword, t:dword
593
	mov edx,[context]
593
	mov edx,[context]
594
	mov eax,[p0]
594
	mov eax,[p0]
595
	cmp dword[edx+offs_cont_current_shade_model],GL_SMOOTH ;if (context.current_shade_model == GL_SMOOTH)
595
	cmp dword[edx+GLContext.current_shade_model],GL_SMOOTH ;if (context.current_shade_model == GL_SMOOTH)
596
	jne .els_0
596
	jne .els_0
597
		mov ecx,[p1]
597
		mov ecx,[p1]
598
		fld dword[ecx+offs_vert_color]
598
		fld dword[ecx+offs_vert_color]
599
		fsub dword[eax+offs_vert_color]
599
		fsub dword[eax+offs_vert_color]
600
		fmul dword[t]
600
		fmul dword[t]
Line 619... Line 619...
619
		mov [edi+offs_vert_color+4],ecx ;q.color.v[1]=p0.color.v[1]
619
		mov [edi+offs_vert_color+4],ecx ;q.color.v[1]=p0.color.v[1]
620
		mov ecx,[eax+offs_vert_color+8]
620
		mov ecx,[eax+offs_vert_color+8]
621
		mov [edi+offs_vert_color+8],ecx ;q.color.v[2]=p0.color.v[2]
621
		mov [edi+offs_vert_color+8],ecx ;q.color.v[2]=p0.color.v[2]
622
	@@:
622
	@@:
Line 623... Line 623...
623
 
623
 
624
	cmp dword[edx+offs_cont_texture_2d_enabled],0 ;if (context.texture_2d_enabled)
624
	cmp dword[edx+GLContext.texture_2d_enabled],0 ;if (context.texture_2d_enabled)
625
	je @f
625
	je @f
626
		mov ecx,[p1]
626
		mov ecx,[p1]
627
		fld dword[ecx+offs_vert_tex_coord+offs_X]
627
		fld dword[ecx+offs_vert_tex_coord+offs_X]
628
		fsub dword[eax+offs_vert_tex_coord+offs_X]
628
		fsub dword[eax+offs_vert_tex_coord+offs_X]
Line 707... Line 707...
707
		je .end_f
707
		je .end_f
708
		jae @f
708
		jae @f
709
			inc dword[front] ;front = norm < 0.0
709
			inc dword[front] ;front = norm < 0.0
710
		@@:
710
		@@:
711
		mov edi,[context]
711
		mov edi,[context]
712
		mov eax,dword[edi+offs_cont_current_front_face]
712
		mov eax,dword[edi+GLContext.current_front_face]
713
		xor dword[front],eax ;front ^= context.current_front_face
713
		xor dword[front],eax ;front ^= context.current_front_face
Line 714... Line 714...
714
 
714
 
715
		; back face culling
715
		; back face culling
716
		cmp dword[edi+offs_cont_cull_face_enabled],0
716
		cmp dword[edi+GLContext.cull_face_enabled],0
717
		je .els_1
717
		je .els_1
718
			; most used case first
718
			; most used case first
719
			cmp dword[edi+offs_cont_current_cull_face],GL_BACK
719
			cmp dword[edi+GLContext.current_cull_face],GL_BACK
720
			jne @f
720
			jne @f
721
				cmp dword[front],0
721
				cmp dword[front],0
722
				je .end_f
722
				je .end_f
723
					stdcall dword[edi+offs_cont_draw_triangle_front], edi,ebx,ecx,edx
723
					stdcall dword[edi+GLContext.draw_triangle_front], edi,ebx,ecx,edx
724
				jmp .end_f
724
				jmp .end_f
725
align 4
725
align 4
726
			@@:
726
			@@:
727
			cmp dword[edi+offs_cont_current_cull_face],GL_FRONT
727
			cmp dword[edi+GLContext.current_cull_face],GL_FRONT
728
			jne .end_f
728
			jne .end_f
729
				cmp dword[front],0
729
				cmp dword[front],0
730
				jne .end_f
730
				jne .end_f
731
					stdcall dword[edi+offs_cont_draw_triangle_back], edi,ebx,ecx,edx
731
					stdcall dword[edi+GLContext.draw_triangle_back], edi,ebx,ecx,edx
732
			jmp .end_f
732
			jmp .end_f
733
align 4
733
align 4
734
		.els_1:
734
		.els_1:
735
			; no culling
735
			; no culling
736
			cmp dword[front],0
736
			cmp dword[front],0
737
			je @f
737
			je @f
738
				stdcall dword[edi+offs_cont_draw_triangle_front], edi,ebx,ecx,edx
738
				stdcall dword[edi+GLContext.draw_triangle_front], edi,ebx,ecx,edx
739
				jmp .end_f
739
				jmp .end_f
740
align 4
740
align 4
741
			@@:
741
			@@:
742
				stdcall dword[edi+offs_cont_draw_triangle_back], edi,ebx,ecx,edx
742
				stdcall dword[edi+GLContext.draw_triangle_back], edi,ebx,ecx,edx
743
		jmp .end_f
743
		jmp .end_f
744
align 4
744
align 4
745
	.els_0:
745
	.els_0:
746
		;eax = cc[2]
746
		;eax = cc[2]
Line 1033... Line 1033...
1033
	mov ebx,[p1]
1033
	mov ebx,[p1]
1034
	add ebx,offs_vert_zp
1034
	add ebx,offs_vert_zp
1035
	mov ecx,[p2]
1035
	mov ecx,[p2]
1036
	add ecx,offs_vert_zp
1036
	add ecx,offs_vert_zp
1037
	mov edx,[context]
1037
	mov edx,[context]
1038
	cmp dword[edx+offs_cont_texture_2d_enabled],0
1038
	cmp dword[edx+GLContext.texture_2d_enabled],0
1039
	je .els_i
1039
	je .els_i
1040
		;if (context.texture_2d_enabled)
1040
		;if (context.texture_2d_enabled)
1041
if PROFILE eq 1
1041
if PROFILE eq 1
1042
	inc dword[count_triangles_textured]
1042
	inc dword[count_triangles_textured]
1043
end if
1043
end if
1044
		mov eax,[edx+offs_cont_current_texture]
1044
		mov eax,[edx+GLContext.current_texture]
1045
		mov eax,[eax] ;переход по указателю
1045
		mov eax,[eax] ;переход по указателю
1046
		;так как offs_text_images+offs_imag_pixmap = 0 то context.current_texture.images[0].pixmap = [eax]
1046
		;так как offs_text_images+offs_imag_pixmap = 0 то context.current_texture.images[0].pixmap = [eax]
1047
		stdcall ZB_setTexture, [edx+offs_cont_zb], [eax],\
1047
		stdcall ZB_setTexture, [edx+GLContext.zb], [eax],\
1048
			[eax+offs_imag_s_bound],[eax+offs_imag_t_bound],[eax+offs_imag_xsize_log2]
1048
			[eax+offs_imag_s_bound],[eax+offs_imag_t_bound],[eax+offs_imag_xsize_log2]
1049
		mov eax,[p0]
1049
		mov eax,[p0]
1050
		add eax,offs_vert_zp
1050
		add eax,offs_vert_zp
1051
		push ecx
1051
		push ecx
1052
		push ebx
1052
		push ebx
1053
		push eax
1053
		push eax
1054
		push dword[edx+offs_cont_zb]
1054
		push dword[edx+GLContext.zb]
1055
		cmp dword[edx+offs_cont_matrix_model_projection_no_w_transform],0
1055
		cmp dword[edx+GLContext.matrix_model_projection_no_w_transform],0
1056
		je @f
1056
		je @f
1057
			call ZB_fillTriangleMappingPerspective
1057
			call ZB_fillTriangleMappingPerspective
1058
			jmp .end_f
1058
			jmp .end_f
1059
align 4
1059
align 4
1060
		@@:
1060
		@@:
Line 1062... Line 1062...
1062
		jmp .end_f
1062
		jmp .end_f
1063
align 4
1063
align 4
1064
	.els_i:
1064
	.els_i:
1065
		mov eax,[p0]
1065
		mov eax,[p0]
1066
		add eax,offs_vert_zp
1066
		add eax,offs_vert_zp
1067
		cmp dword[edx+offs_cont_current_shade_model],GL_SMOOTH
1067
		cmp dword[edx+GLContext.current_shade_model],GL_SMOOTH
1068
		jne .els
1068
		jne .els
1069
			;else if (context.current_shade_model == GL_SMOOTH)
1069
			;else if (context.current_shade_model == GL_SMOOTH)
1070
			stdcall ZB_fillTriangleSmooth, dword[edx+offs_cont_zb],eax,ebx,ecx
1070
			stdcall ZB_fillTriangleSmooth, dword[edx+GLContext.zb],eax,ebx,ecx
1071
			jmp .end_f
1071
			jmp .end_f
1072
align 4
1072
align 4
1073
		.els:
1073
		.els:
1074
			stdcall ZB_fillTriangleFlat, dword[edx+offs_cont_zb],eax,ebx,ecx
1074
			stdcall ZB_fillTriangleFlat, dword[edx+GLContext.zb],eax,ebx,ecx
1075
	.end_f:
1075
	.end_f:
1076
popad
1076
popad
1077
	ret
1077
	ret
1078
endp
1078
endp
Line 1079... Line 1079...
1079
 
1079
 
Line 1080... Line 1080...
1080
; Render a clipped triangle in line mode
1080
; Render a clipped triangle in line mode
1081
 
1081
 
1082
align 16
1082
align 16
1083
proc gl_draw_triangle_line uses eax ebx ecx edx, context:dword, p0:dword,p1:dword,p2:dword
1083
proc gl_draw_triangle_line uses eax ebx ecx edx, context:dword, p0:dword,p1:dword,p2:dword
1084
	mov edx,[context]
1084
	mov edx,[context]
1085
	cmp dword[edx+offs_cont_depth_test],0
1085
	cmp dword[edx+GLContext.depth_test],0
1086
	je .els
1086
	je .els
1087
		lea ecx,[ZB_line_z]
1087
		lea ecx,[ZB_line_z]
1088
		jmp @f
1088
		jmp @f
Line 1097... Line 1097...
1097
	je @f
1097
	je @f
1098
		mov ebx,eax
1098
		mov ebx,eax
1099
		add ebx,offs_vert_zp
1099
		add ebx,offs_vert_zp
1100
		mov eax,[p1]
1100
		mov eax,[p1]
1101
		add eax,offs_vert_zp
1101
		add eax,offs_vert_zp
1102
		stdcall ecx,dword[edx+offs_cont_zb],ebx,eax
1102
		stdcall ecx,dword[edx+GLContext.zb],ebx,eax
1103
	@@:
1103
	@@:
1104
	;if (p1.edge_flag) ZB_line_z(context.zb,&p1.zp,&p2.zp)
1104
	;if (p1.edge_flag) ZB_line_z(context.zb,&p1.zp,&p2.zp)
1105
	mov eax,[p1]
1105
	mov eax,[p1]
1106
	cmp dword[eax+offs_vert_edge_flag],0
1106
	cmp dword[eax+offs_vert_edge_flag],0
1107
	je @f
1107
	je @f
1108
		mov ebx,eax
1108
		mov ebx,eax
1109
		add ebx,offs_vert_zp
1109
		add ebx,offs_vert_zp
1110
		mov eax,[p2]
1110
		mov eax,[p2]
1111
		add eax,offs_vert_zp
1111
		add eax,offs_vert_zp
1112
		stdcall ecx,dword[edx+offs_cont_zb],ebx,eax
1112
		stdcall ecx,dword[edx+GLContext.zb],ebx,eax
1113
	@@:
1113
	@@:
1114
	;if (p2.edge_flag) ZB_line_z(context.zb,&p2.zp,&p0.zp);
1114
	;if (p2.edge_flag) ZB_line_z(context.zb,&p2.zp,&p0.zp);
1115
	mov eax,[p2]
1115
	mov eax,[p2]
1116
	cmp dword[eax+offs_vert_edge_flag],0
1116
	cmp dword[eax+offs_vert_edge_flag],0
1117
	je @f
1117
	je @f
1118
		mov ebx,eax
1118
		mov ebx,eax
1119
		add ebx,offs_vert_zp
1119
		add ebx,offs_vert_zp
1120
		mov eax,[p0]
1120
		mov eax,[p0]
1121
		add eax,offs_vert_zp
1121
		add eax,offs_vert_zp
1122
		stdcall ecx,dword[edx+offs_cont_zb],ebx,eax
1122
		stdcall ecx,dword[edx+GLContext.zb],ebx,eax
1123
	@@:
1123
	@@:
Line 1124... Line 1124...
1124
 
1124
 
1125
	ret
1125
	ret
Line 1132... Line 1132...
1132
	mov eax,[p0]
1132
	mov eax,[p0]
1133
	cmp dword[eax+offs_vert_edge_flag],0
1133
	cmp dword[eax+offs_vert_edge_flag],0
1134
	je @f
1134
	je @f
1135
		mov ebx,eax
1135
		mov ebx,eax
1136
		add ebx,offs_vert_zp
1136
		add ebx,offs_vert_zp
1137
		stdcall ZB_plot,dword[edx+offs_cont_zb],ebx
1137
		stdcall ZB_plot,dword[edx+GLContext.zb],ebx
1138
	@@:
1138
	@@:
1139
	mov eax,[p1]
1139
	mov eax,[p1]
1140
	cmp dword[eax+offs_vert_edge_flag],0
1140
	cmp dword[eax+offs_vert_edge_flag],0
1141
	je @f
1141
	je @f
1142
		mov ebx,eax
1142
		mov ebx,eax
1143
		add ebx,offs_vert_zp
1143
		add ebx,offs_vert_zp
1144
		stdcall ZB_plot,dword[edx+offs_cont_zb],ebx
1144
		stdcall ZB_plot,dword[edx+GLContext.zb],ebx
1145
	@@:
1145
	@@:
1146
	mov eax,[p2]
1146
	mov eax,[p2]
1147
	cmp dword[eax+offs_vert_edge_flag],0
1147
	cmp dword[eax+offs_vert_edge_flag],0
1148
	je @f
1148
	je @f
1149
		mov ebx,eax
1149
		mov ebx,eax
1150
		add ebx,offs_vert_zp
1150
		add ebx,offs_vert_zp
1151
		stdcall ZB_plot,dword[edx+offs_cont_zb],ebx
1151
		stdcall ZB_plot,dword[edx+GLContext.zb],ebx
1152
	@@:
1152
	@@:
1153
	ret
1153
	ret
1154
endp
1154
endp