Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 6522 → Rev 6523

/programs/develop/libraries/TinyGL/asm_fork/api.asm
1021,6 → 1021,6
proc glDebug uses eax, mode:dword
stdcall gl_get_context ;после вызова функции в eax указатель на GLContext
push dword[mode]
pop dword[eax+offs_cont_print_flag]
pop dword[eax+GLContext.print_flag]
ret
endp
/programs/develop/libraries/TinyGL/asm_fork/arrays.asm
16,13 → 16,13
mov ebx,[param]
mov ebx,[ebx+4] ;ebx = p[1]
bt dword[eax+offs_cont_client_states],1 ;2^1=COLOR_ARRAY
bt dword[eax+GLContext.client_states],1 ;2^1=COLOR_ARRAY
jnc @f
mov ecx,[eax+offs_cont_color_array_size]
add ecx,[eax+offs_cont_color_array_stride]
mov ecx,[eax+GLContext.color_array_size]
add ecx,[eax+GLContext.color_array_stride]
imul ecx,ebx
shl ecx,2
add ecx,[eax+offs_cont_color_array] ;ecx = &context.color_array[i]
add ecx,[eax+GLContext.color_array] ;ecx = &context.color_array[i]
mov ebx,ebp
sub ebx,20 ;=sizeof(dd)*5
mov edx,[ecx]
31,7 → 31,7
mov [ebx+8],edx
mov edx,[ecx+8]
mov [ebx+12],edx
cmp dword[eax+offs_cont_color_array_size],3
cmp dword[eax+GLContext.color_array_size],3
jg .l0
mov edx,1.0
jmp .l1
41,32 → 41,32
mov [ebx+16],edx
stdcall glopColor, eax,ebx
@@:
bt dword[eax+offs_cont_client_states],2 ;2^2=NORMAL_ARRAY
bt dword[eax+GLContext.client_states],2 ;2^2=NORMAL_ARRAY
jnc @f
mov esi,dword[eax+offs_cont_normal_array_stride]
mov esi,dword[eax+GLContext.normal_array_stride]
add esi,3
imul esi,ebx
shl esi,2
add esi,[eax+offs_cont_normal_array] ;esi = &normal_array[ebx * (3 + c->normal_array_stride)]
add esi,[eax+GLContext.normal_array] ;esi = &normal_array[ebx * (3 + c->normal_array_stride)]
mov edi,eax
add edi,offs_cont_current_normal
add edi,GLContext.current_normal
mov ecx,3
rep movsd
mov dword[edi],0.0
@@:
bt dword[eax+offs_cont_client_states],3 ;2^3=TEXCOORD_ARRAY
bt dword[eax+GLContext.client_states],3 ;2^3=TEXCOORD_ARRAY
jnc @f
mov ecx,[eax+offs_cont_texcoord_array_size]
add ecx,[eax+offs_cont_texcoord_array_stride]
mov ecx,[eax+GLContext.texcoord_array_size]
add ecx,[eax+GLContext.texcoord_array_stride]
imul ecx,ebx
shl ecx,2
add ecx,[eax+offs_cont_texcoord_array] ;ecx = &context.texcoord_array[i]
add ecx,[eax+GLContext.texcoord_array] ;ecx = &context.texcoord_array[i]
mov edx,[ecx]
mov [eax+offs_cont_current_tex_coord],edx
mov [eax+GLContext.current_tex_coord],edx
mov edx,[ecx+4]
mov [eax+offs_cont_current_tex_coord+4],edx
mov [eax+GLContext.current_tex_coord+4],edx
 
cmp dword[eax+offs_cont_texcoord_array_size],2
cmp dword[eax+GLContext.texcoord_array_size],2
jg .l2
mov edx,0.0
jmp .l3
73,9 → 73,9
.l2:
mov edx,[ecx+8]
.l3:
mov [eax+offs_cont_current_tex_coord+8],edx
mov [eax+GLContext.current_tex_coord+8],edx
 
cmp dword[eax+offs_cont_texcoord_array_size],3
cmp dword[eax+GLContext.texcoord_array_size],3
jg .l4
mov edx,1.0
jmp .l5
83,15 → 83,15
mov edx,[ecx+12]
.l5:
 
mov [eax+offs_cont_current_tex_coord+12],edx
mov [eax+GLContext.current_tex_coord+12],edx
@@:
bt dword[eax+offs_cont_client_states],0 ;2^0=VERTEX_ARRAY
bt dword[eax+GLContext.client_states],0 ;2^0=VERTEX_ARRAY
jnc @f
mov ecx,[eax+offs_cont_vertex_array_size]
add ecx,[eax+offs_cont_vertex_array_stride]
mov ecx,[eax+GLContext.vertex_array_size]
add ecx,[eax+GLContext.vertex_array_stride]
imul ecx,ebx
shl ecx,2
add ecx,[eax+offs_cont_vertex_array] ;ecx = &context.vertex_array[i]
add ecx,[eax+GLContext.vertex_array] ;ecx = &context.vertex_array[i]
mov ebx,ebp
sub ebx,20 ;=sizeof(dd)*5
mov edx,[ecx]
99,7 → 99,7
mov edx,[ecx+4]
mov [ebx+8],edx
 
cmp dword[eax+offs_cont_vertex_array_size],2
cmp dword[eax+GLContext.vertex_array_size],2
jg .l6
mov edx,0.0
jmp .l7
107,7 → 107,7
mov edx,[ecx+8]
.l7:
mov [ebx+12],edx
cmp dword[eax+offs_cont_vertex_array_size],3
cmp dword[eax+GLContext.vertex_array_size],3
jg .l8
mov edx,1.0
jmp .l9
149,7 → 149,7
mov edx,[context]
mov ebx,[param]
mov ecx,[ebx+12] ;count = param[3].i
mov eax,[edx+offs_cont_client_states]
mov eax,[edx+GLContext.client_states]
mov [states],eax
mov eax,[ebx+8]
mov [idx],eax ;param[2].i
166,12 → 166,12
jge .cycle_0_end
bt dword[states],1 ;2^1=COLOR_ARRAY
jnc @f
mov esi,[edx+offs_cont_color_array_size]
mov esi,[edx+GLContext.color_array_size]
mov [size],esi
add esi,[edx+offs_cont_color_array_stride]
add esi,[edx+GLContext.color_array_stride]
imul esi,[idx] ;esi = i
shl esi,2
add esi,[edx+offs_cont_color_array] ;esi = &context.color_array[i]
add esi,[edx+GLContext.color_array] ;esi = &context.color_array[i]
mov edi,ebp
sub edi,28 ;edi = &p[1]
mov ebx,[esi+8]
203,13 → 203,13
@@:
bt dword[states],2 ;2^2=NORMAL_ARRAY
jnc @f
mov esi,[edx+offs_cont_normal_array_stride]
mov esi,[edx+GLContext.normal_array_stride]
add esi,3
imul esi,[idx]
shl esi,2
add esi,[edx+offs_cont_normal_array] ;esi = &context.normal_array[ idx * (3 + context.normal_array_stride) ]
add esi,[edx+GLContext.normal_array] ;esi = &context.normal_array[ idx * (3 + context.normal_array_stride) ]
mov edi,edx
add edi,offs_cont_current_normal
add edi,GLContext.current_normal
movsd ;context.current_normal.X = context.normal_array[i]
movsd
movsd
217,14 → 217,14
@@:
bt dword[states],3 ;2^3=TEXCOORD_ARRAY
jnc @f
mov esi,[edx+offs_cont_texcoord_array_size]
mov esi,[edx+GLContext.texcoord_array_size]
mov [size],esi
add esi,[edx+offs_cont_texcoord_array_stride]
add esi,[edx+GLContext.texcoord_array_stride]
imul esi,[idx] ;esi = i
shl esi,2
add esi,[edx+offs_cont_texcoord_array] ;esi = &context.texcoord_array[i]
add esi,[edx+GLContext.texcoord_array] ;esi = &context.texcoord_array[i]
mov edi,edx
add edi,offs_cont_current_tex_coord
add edi,GLContext.current_tex_coord
movsd ;context.current_tex_coord.X = ccontext.texcoord_array[i]
movsd
cmp dword[size],2
244,12 → 244,12
@@:
bt dword[states],0 ;2^0=VERTEX_ARRAY
jnc @f
mov esi,[edx+offs_cont_vertex_array_size]
mov esi,[edx+GLContext.vertex_array_size]
mov [size],esi
add esi,[edx+offs_cont_vertex_array_stride]
add esi,[edx+GLContext.vertex_array_stride]
imul esi,[idx] ;esi = i
shl esi,2
add esi,[edx+offs_cont_vertex_array] ;esi = &context.vertex_array[i]
add esi,[edx+GLContext.vertex_array] ;esi = &context.vertex_array[i]
mov edi,ebp
sub edi,28 ;edi = &p[1]
movsd ;p[1].f = context.vertex_array[i]
319,7 → 319,7
pushad
mov edx,[context]
mov ebx,[param]
mov eax,[edx+offs_cont_client_states]
mov eax,[edx+GLContext.client_states]
mov [states],eax
mov eax,[ebx+4]
mov [p+4],eax ;p[1].i = param[1].i
353,12 → 353,12
 
bt dword[states],1 ;2^1=COLOR_ARRAY
jnc @f
mov esi,[edx+offs_cont_color_array_size]
mov esi,[edx+GLContext.color_array_size]
mov [size],esi
add esi,[edx+offs_cont_color_array_stride]
add esi,[edx+GLContext.color_array_stride]
imul esi,[idx] ;esi = i
shl esi,2
add esi,[edx+offs_cont_color_array] ;esi = &context.color_array[i]
add esi,[edx+GLContext.color_array] ;esi = &context.color_array[i]
mov edi,ebp
sub edi,28 ;edi = &p[1]
mov ebx,[esi+8]
390,13 → 390,13
@@:
bt dword[states],2 ;2^2=NORMAL_ARRAY
jnc @f
mov esi,[edx+offs_cont_normal_array_stride]
mov esi,[edx+GLContext.normal_array_stride]
add esi,3
imul esi,[idx] ;esi = idx * (3 + context.normal_array_stride)
shl esi,2
add esi,[edx+offs_cont_normal_array]
add esi,[edx+GLContext.normal_array]
mov edi,edx
add edi,offs_cont_current_normal
add edi,GLContext.current_normal
movsd ;context.current_normal.X = context.normal_array[i]
movsd
movsd
404,14 → 404,14
@@:
bt dword[states],3 ;2^3=TEXCOORD_ARRAY
jnc @f
mov esi,[edx+offs_cont_texcoord_array_size]
mov esi,[edx+GLContext.texcoord_array_size]
mov [size],esi
add esi,[edx+offs_cont_texcoord_array_stride]
add esi,[edx+GLContext.texcoord_array_stride]
imul esi,[idx] ;esi = i
shl esi,2
add esi,[edx+offs_cont_texcoord_array] ;esi = &context.texcoord_array[i]
add esi,[edx+GLContext.texcoord_array] ;esi = &context.texcoord_array[i]
mov edi,edx
add edi,offs_cont_current_tex_coord
add edi,GLContext.current_tex_coord
movsd ;context.current_tex_coord.X = ccontext.texcoord_array[i]
movsd
cmp dword[size],2
431,12 → 431,12
@@:
bt dword[states],0 ;2^0=VERTEX_ARRAY
jnc @f
mov esi,[edx+offs_cont_vertex_array_size]
mov esi,[edx+GLContext.vertex_array_size]
mov [size],esi
add esi,[edx+offs_cont_vertex_array_stride]
add esi,[edx+GLContext.vertex_array_stride]
imul esi,[idx] ;esi = i
shl esi,2
add esi,[edx+offs_cont_vertex_array] ;esi = &context.vertex_array[i]
add esi,[edx+GLContext.vertex_array] ;esi = &context.vertex_array[i]
mov edi,ebp
sub edi,28 ;edi = &p[1]
movsd ;p[1].f = context.vertex_array[i]
499,7 → 499,7
mov eax,[context]
mov ebx,[p]
mov ebx,[ebx+4] ;ebx = p[1]
or dword[eax+offs_cont_client_states],ebx
or dword[eax+GLContext.client_states],ebx
ret
endp
 
544,7 → 544,7
mov eax,[context]
mov ebx,[p]
mov ebx,[ebx+4] ;ebx = p[1]
and dword[eax+offs_cont_client_states],ebx
and dword[eax+GLContext.client_states],ebx
ret
endp
 
589,11 → 589,11
mov eax,[context]
mov ebx,[p]
mov ecx,[ebx+4] ;ecx = p[1]
mov dword[eax+offs_cont_vertex_array_size],ecx
mov dword[eax+GLContext.vertex_array_size],ecx
mov ecx,[ebx+8] ;ecx = p[2]
mov dword[eax+offs_cont_vertex_array_stride],ecx
mov dword[eax+GLContext.vertex_array_stride],ecx
mov ecx,[ebx+12] ;ecx = p[3]
mov dword[eax+offs_cont_vertex_array],ecx
mov dword[eax+GLContext.vertex_array],ecx
ret
endp
 
623,11 → 623,11
mov eax,[context]
mov ebx,[p]
mov ecx,[ebx+4] ;ecx = p[1]
mov dword[eax+offs_cont_color_array_size],ecx
mov dword[eax+GLContext.color_array_size],ecx
mov ecx,[ebx+8] ;ecx = p[2]
mov dword[eax+offs_cont_color_array_stride],ecx
mov dword[eax+GLContext.color_array_stride],ecx
mov ecx,[ebx+12] ;ecx = p[3]
mov dword[eax+offs_cont_color_array],ecx
mov dword[eax+GLContext.color_array],ecx
ret
endp
 
657,9 → 657,9
mov eax,[context]
mov ebx,[p]
mov ecx,[ebx+4] ;ecx = p[1]
mov dword[eax+offs_cont_normal_array_stride],ecx
mov dword[eax+GLContext.normal_array_stride],ecx
mov ecx,[ebx+8] ;ecx = p[2]
mov dword[eax+offs_cont_normal_array],ecx
mov dword[eax+GLContext.normal_array],ecx
ret
endp
 
687,11 → 687,11
mov eax,[context]
mov ebx,[p]
mov ecx,[ebx+4] ;ecx = p[1]
mov dword[eax+offs_cont_texcoord_array_size],ecx
mov dword[eax+GLContext.texcoord_array_size],ecx
mov ecx,[ebx+8] ;ecx = p[2]
mov dword[eax+offs_cont_texcoord_array_stride],ecx
mov dword[eax+GLContext.texcoord_array_stride],ecx
mov ecx,[ebx+12] ;ecx = p[3]
mov dword[eax+offs_cont_texcoord_array],ecx
mov dword[eax+GLContext.texcoord_array],ecx
ret
endp
 
/programs/develop/libraries/TinyGL/asm_fork/clear.asm
4,7 → 4,7
mov esi,[p]
add esi,4
mov edi,[context]
add edi,offs_cont_clear_color
add edi,GLContext.clear_color
mov ecx,4
rep movsd
ret
15,7 → 15,7
mov eax,[context]
mov ebx,[p]
mov ebx,[ebx+4] ;ebx = p[1]
mov dword[eax+offs_cont_clear_depth],ebx
mov dword[eax+GLContext.clear_depth],ebx
ret
endp
 
25,13 → 25,13
align 4
proc glopClear uses eax ebx, context:dword, p:dword
mov eax,[context]
fld dword[eax+offs_cont_clear_color+8] ;context.clear_color.v[2]
fld dword[eax+GLContext.clear_color+8] ;context.clear_color.v[2]
fmul dword[fl_65535]
fistp dword[esp-4]
fld dword[eax+offs_cont_clear_color+4] ;context.clear_color.v[1]
fld dword[eax+GLContext.clear_color+4] ;context.clear_color.v[1]
fmul dword[fl_65535]
fistp dword[esp-8]
fld dword[eax+offs_cont_clear_color] ;context.clear_color.v[0]
fld dword[eax+GLContext.clear_color] ;context.clear_color.v[0]
fmul dword[fl_65535]
fistp dword[esp-12]
sub esp,12
45,7 → 45,7
and ebx,GL_DEPTH_BUFFER_BIT
 
; TODO : correct value of Z
stdcall ZB_clear,[eax+offs_cont_zb],ebx,0 ;,...,r,g,b
stdcall ZB_clear,[eax+GLContext.zb],ebx,0 ;,...,r,g,b
ret
endp
 
/programs/develop/libraries/TinyGL/asm_fork/clip.asm
19,24 → 19,24
 
fld dword[ebx+offs_vert_pc+offs_X] ;st0 = v.pc.X
fmul st0,st1
fmul dword[eax+offs_cont_viewport+offs_vpor_scale+offs_X]
fadd dword[eax+offs_cont_viewport+offs_vpor_trans+offs_X]
fmul dword[eax+GLContext.viewport+offs_vpor_scale+offs_X]
fadd dword[eax+GLContext.viewport+offs_vpor_trans+offs_X]
fistp dword[ebx+offs_vert_zp] ;v.zp.x = st0, st0 = st1
 
fld dword[ebx+offs_vert_pc+offs_Y] ;st0 = v.pc.Y
fmul st0,st1
fmul dword[eax+offs_cont_viewport+offs_vpor_scale+offs_Y]
fadd dword[eax+offs_cont_viewport+offs_vpor_trans+offs_Y]
fmul dword[eax+GLContext.viewport+offs_vpor_scale+offs_Y]
fadd dword[eax+GLContext.viewport+offs_vpor_trans+offs_Y]
fistp dword[ebx+offs_vert_zp+offs_zbup_y] ;v.zp.y = st0, st0 = st1
 
fld dword[ebx+offs_vert_pc+offs_Z] ;st0 = v.pc.Z
fmulp
fmul dword[eax+offs_cont_viewport+offs_vpor_scale+offs_Z]
fadd dword[eax+offs_cont_viewport+offs_vpor_trans+offs_Z]
fmul dword[eax+GLContext.viewport+offs_vpor_scale+offs_Z]
fadd dword[eax+GLContext.viewport+offs_vpor_trans+offs_Z]
fistp dword[ebx+offs_vert_zp+offs_zbup_z] ;v.zp.z = st0, st0 = st1
 
; color
cmp dword[eax+offs_cont_lighting_enabled],0 ;if (context.lighting_enabled)
cmp dword[eax+GLContext.lighting_enabled],0 ;if (context.lighting_enabled)
je @f
mov ecx,ebx
add ecx,offs_vert_zp+offs_zbup_b
50,18 → 50,18
align 4
@@:
; no need to convert to integer if no lighting : take current color
mov ecx,[eax+offs_cont_longcurrent_color]
mov ecx,[eax+GLContext.longcurrent_color]
mov dword[ebx+offs_vert_zp+offs_zbup_r],ecx
mov ecx,[eax+offs_cont_longcurrent_color+4]
mov ecx,[eax+GLContext.longcurrent_color+4]
mov dword[ebx+offs_vert_zp+offs_zbup_g],ecx
mov ecx,[eax+offs_cont_longcurrent_color+8]
mov ecx,[eax+GLContext.longcurrent_color+8]
mov dword[ebx+offs_vert_zp+offs_zbup_b],ecx
.end_if:
; texture
cmp dword[eax+offs_cont_texture_2d_enabled],0
cmp dword[eax+GLContext.texture_2d_enabled],0
je @f
mov eax,[eax+offs_cont_current_texture] ;eax = &context.current_texture
mov eax,[eax+GLContext.current_texture] ;eax = &context.current_texture
mov eax,[eax] ;eax = context.current_texture
;[eax+offs_text_images] = im = &context.current_texture.images[0]
 
116,7 → 116,7
cmp dword[ebx+offs_vert_clip_code],0 ;if (p0.clip_code == 0)
jne @f
mov eax,[context]
cmp dword[eax+offs_cont_render_mode],GL_SELECT
cmp dword[eax+GLContext.render_mode],GL_SELECT
jne .els
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
jmp @f
123,7 → 123,7
align 4
.els:
add ebx,offs_vert_zp
stdcall ZB_plot, dword[eax+offs_cont_zb],ebx
stdcall ZB_plot, dword[eax+GLContext.zb],ebx
@@:
ret
endp
285,7 → 285,7
cmp dword[esi+offs_vert_clip_code],0
jne .els_i
;if ( (p1.clip_code | p2.clip_code) == 0)
cmp dword[edx+offs_cont_render_mode],GL_SELECT ;if (context.render_mode == GL_SELECT)
cmp dword[edx+GLContext.render_mode],GL_SELECT ;if (context.render_mode == GL_SELECT)
jne .els_1
stdcall gl_add_select1, edx,dword[edi+offs_vert_zp+offs_zbup_z],\
dword[esi+offs_vert_zp+offs_zbup_z],dword[esi+offs_vert_zp+offs_zbup_z]
296,15 → 296,15
add esi,offs_vert_zp
push esi
push edi
push dword[edx+offs_cont_zb]
cmp dword[edx+offs_cont_depth_test],0
push dword[edx+GLContext.zb]
cmp dword[edx+GLContext.depth_test],0
je .els_2
;if (context.depth_test)
call ZB_line_z ;, dword[edx+offs_cont_zb],edi,esi
call ZB_line_z ;, dword[edx+GLContext.zb],edi,esi
jmp .end_f
align 4
.els_2:
call ZB_line ;, dword[edx+offs_cont_zb],edi,esi
call ZB_line ;, dword[edx+GLContext.zb],edi,esi
jmp .end_f
align 4
.els_i:
451,8 → 451,8
push eax
sub eax,sizeof.GLVertex ;eax = &q1.zp
push eax
push dword[edx+offs_cont_zb]
cmp dword[edx+offs_cont_depth_test],0
push dword[edx+GLContext.zb]
cmp dword[edx+GLContext.depth_test],0
je .els_3
call ZB_line_z ;(context.zb,&q1.zp,&q2.zp)
jmp .end_f
592,7 → 592,7
proc updateTmp uses eax ecx edx, context:dword, p0:dword, p1:dword, t:dword
mov edx,[context]
mov eax,[p0]
cmp dword[edx+offs_cont_current_shade_model],GL_SMOOTH ;if (context.current_shade_model == GL_SMOOTH)
cmp dword[edx+GLContext.current_shade_model],GL_SMOOTH ;if (context.current_shade_model == GL_SMOOTH)
jne .els_0
mov ecx,[p1]
fld dword[ecx+offs_vert_color]
621,7 → 621,7
mov [edi+offs_vert_color+8],ecx ;q.color.v[2]=p0.color.v[2]
@@:
 
cmp dword[edx+offs_cont_texture_2d_enabled],0 ;if (context.texture_2d_enabled)
cmp dword[edx+GLContext.texture_2d_enabled],0 ;if (context.texture_2d_enabled)
je @f
mov ecx,[p1]
fld dword[ecx+offs_vert_tex_coord+offs_X]
709,26 → 709,26
inc dword[front] ;front = norm < 0.0
@@:
mov edi,[context]
mov eax,dword[edi+offs_cont_current_front_face]
mov eax,dword[edi+GLContext.current_front_face]
xor dword[front],eax ;front ^= context.current_front_face
 
; back face culling
cmp dword[edi+offs_cont_cull_face_enabled],0
cmp dword[edi+GLContext.cull_face_enabled],0
je .els_1
; most used case first
cmp dword[edi+offs_cont_current_cull_face],GL_BACK
cmp dword[edi+GLContext.current_cull_face],GL_BACK
jne @f
cmp dword[front],0
je .end_f
stdcall dword[edi+offs_cont_draw_triangle_front], edi,ebx,ecx,edx
stdcall dword[edi+GLContext.draw_triangle_front], edi,ebx,ecx,edx
jmp .end_f
align 4
@@:
cmp dword[edi+offs_cont_current_cull_face],GL_FRONT
cmp dword[edi+GLContext.current_cull_face],GL_FRONT
jne .end_f
cmp dword[front],0
jne .end_f
stdcall dword[edi+offs_cont_draw_triangle_back], edi,ebx,ecx,edx
stdcall dword[edi+GLContext.draw_triangle_back], edi,ebx,ecx,edx
jmp .end_f
align 4
.els_1:
735,11 → 735,11
; no culling
cmp dword[front],0
je @f
stdcall dword[edi+offs_cont_draw_triangle_front], edi,ebx,ecx,edx
stdcall dword[edi+GLContext.draw_triangle_front], edi,ebx,ecx,edx
jmp .end_f
align 4
@@:
stdcall dword[edi+offs_cont_draw_triangle_back], edi,ebx,ecx,edx
stdcall dword[edi+GLContext.draw_triangle_back], edi,ebx,ecx,edx
jmp .end_f
align 4
.els_0:
1035,16 → 1035,16
mov ecx,[p2]
add ecx,offs_vert_zp
mov edx,[context]
cmp dword[edx+offs_cont_texture_2d_enabled],0
cmp dword[edx+GLContext.texture_2d_enabled],0
je .els_i
;if (context.texture_2d_enabled)
if PROFILE eq 1
inc dword[count_triangles_textured]
end if
mov eax,[edx+offs_cont_current_texture]
mov eax,[edx+GLContext.current_texture]
mov eax,[eax] ;переход по указателю
;так как offs_text_images+offs_imag_pixmap = 0 то context.current_texture.images[0].pixmap = [eax]
stdcall ZB_setTexture, [edx+offs_cont_zb], [eax],\
stdcall ZB_setTexture, [edx+GLContext.zb], [eax],\
[eax+offs_imag_s_bound],[eax+offs_imag_t_bound],[eax+offs_imag_xsize_log2]
mov eax,[p0]
add eax,offs_vert_zp
1051,8 → 1051,8
push ecx
push ebx
push eax
push dword[edx+offs_cont_zb]
cmp dword[edx+offs_cont_matrix_model_projection_no_w_transform],0
push dword[edx+GLContext.zb]
cmp dword[edx+GLContext.matrix_model_projection_no_w_transform],0
je @f
call ZB_fillTriangleMappingPerspective
jmp .end_f
1064,14 → 1064,14
.els_i:
mov eax,[p0]
add eax,offs_vert_zp
cmp dword[edx+offs_cont_current_shade_model],GL_SMOOTH
cmp dword[edx+GLContext.current_shade_model],GL_SMOOTH
jne .els
;else if (context.current_shade_model == GL_SMOOTH)
stdcall ZB_fillTriangleSmooth, dword[edx+offs_cont_zb],eax,ebx,ecx
stdcall ZB_fillTriangleSmooth, dword[edx+GLContext.zb],eax,ebx,ecx
jmp .end_f
align 4
.els:
stdcall ZB_fillTriangleFlat, dword[edx+offs_cont_zb],eax,ebx,ecx
stdcall ZB_fillTriangleFlat, dword[edx+GLContext.zb],eax,ebx,ecx
.end_f:
popad
ret
1082,7 → 1082,7
align 16
proc gl_draw_triangle_line uses eax ebx ecx edx, context:dword, p0:dword,p1:dword,p2:dword
mov edx,[context]
cmp dword[edx+offs_cont_depth_test],0
cmp dword[edx+GLContext.depth_test],0
je .els
lea ecx,[ZB_line_z]
jmp @f
1099,7 → 1099,7
add ebx,offs_vert_zp
mov eax,[p1]
add eax,offs_vert_zp
stdcall ecx,dword[edx+offs_cont_zb],ebx,eax
stdcall ecx,dword[edx+GLContext.zb],ebx,eax
@@:
;if (p1.edge_flag) ZB_line_z(context.zb,&p1.zp,&p2.zp)
mov eax,[p1]
1109,7 → 1109,7
add ebx,offs_vert_zp
mov eax,[p2]
add eax,offs_vert_zp
stdcall ecx,dword[edx+offs_cont_zb],ebx,eax
stdcall ecx,dword[edx+GLContext.zb],ebx,eax
@@:
;if (p2.edge_flag) ZB_line_z(context.zb,&p2.zp,&p0.zp);
mov eax,[p2]
1119,7 → 1119,7
add ebx,offs_vert_zp
mov eax,[p0]
add eax,offs_vert_zp
stdcall ecx,dword[edx+offs_cont_zb],ebx,eax
stdcall ecx,dword[edx+GLContext.zb],ebx,eax
@@:
 
ret
1134,7 → 1134,7
je @f
mov ebx,eax
add ebx,offs_vert_zp
stdcall ZB_plot,dword[edx+offs_cont_zb],ebx
stdcall ZB_plot,dword[edx+GLContext.zb],ebx
@@:
mov eax,[p1]
cmp dword[eax+offs_vert_edge_flag],0
1141,7 → 1141,7
je @f
mov ebx,eax
add ebx,offs_vert_zp
stdcall ZB_plot,dword[edx+offs_cont_zb],ebx
stdcall ZB_plot,dword[edx+GLContext.zb],ebx
@@:
mov eax,[p2]
cmp dword[eax+offs_vert_edge_flag],0
1148,7 → 1148,7
je @f
mov ebx,eax
add ebx,offs_vert_zp
stdcall ZB_plot,dword[edx+offs_cont_zb],ebx
stdcall ZB_plot,dword[edx+GLContext.zb],ebx
@@:
ret
endp
/programs/develop/libraries/TinyGL/asm_fork/init.asm
4,9 → 4,9
mov ebx,[context]
 
stdcall gl_zalloc, 4*MAX_DISPLAY_LISTS
mov [ebx+offs_cont_shared_state],eax ;...lists=gl_zalloc(...)
mov [ebx+GLContext.shared_state],eax ;...lists=gl_zalloc(...)
stdcall gl_zalloc, 4*TEXTURE_HASH_TABLE_SIZE
mov [ebx+offs_cont_shared_state+4],eax ;...texture_hash_table=gl_zalloc(...)
mov [ebx+GLContext.shared_state+4],eax ;...texture_hash_table=gl_zalloc(...)
 
stdcall alloc_texture, [context],0
ret
19,8 → 19,8
; for(i=0;i<MAX_DISPLAY_LISTS;i++) {
; /* TODO */
; }
stdcall gl_free, dword[ebx+offs_cont_shared_state] ;lists
stdcall gl_free, dword[ebx+offs_cont_shared_state+4] ;texture_hash_table
stdcall gl_free, dword[ebx+GLContext.shared_state] ;lists
stdcall gl_free, dword[ebx+GLContext.shared_state+4] ;texture_hash_table
ret
endp
 
31,37 → 31,37
mov edx,eax
 
mov ecx,[zbuffer1]
mov dword[edx+offs_cont_zb],ecx
mov dword[edx+GLContext.zb],ecx
 
; allocate GLVertex array
mov dword[edx+offs_cont_vertex_max],POLYGON_MAX_VERTEX
mov dword[edx+GLContext.vertex_max],POLYGON_MAX_VERTEX
stdcall gl_malloc, POLYGON_MAX_VERTEX*sizeof.GLVertex
mov dword[edx+offs_cont_vertex],eax
mov dword[edx+GLContext.vertex],eax
 
; viewport
xor eax,eax
mov dword[edx+offs_cont_viewport+offs_vpor_xmin],eax
mov dword[edx+offs_cont_viewport+offs_vpor_ymin],eax
mov dword[edx+GLContext.viewport+offs_vpor_xmin],eax
mov dword[edx+GLContext.viewport+offs_vpor_ymin],eax
mov eax,[ecx+offs_zbuf_xsize]
mov dword[edx+offs_cont_viewport+offs_vpor_xsize],eax
mov dword[edx+GLContext.viewport+offs_vpor_xsize],eax
mov eax,[ecx+offs_zbuf_ysize]
mov dword[edx+offs_cont_viewport+offs_vpor_ysize],eax
mov dword[edx+offs_cont_viewport+offs_vpor_updated],1
mov dword[edx+GLContext.viewport+offs_vpor_ysize],eax
mov dword[edx+GLContext.viewport+offs_vpor_updated],1
 
; shared state
stdcall initSharedState,edx
 
; lists
mov dword[edx+offs_cont_exec_flag],1
mov dword[edx+offs_cont_compile_flag],0
mov dword[edx+offs_cont_print_flag],0
mov dword[edx+GLContext.exec_flag],1
mov dword[edx+GLContext.compile_flag],0
mov dword[edx+GLContext.print_flag],0
 
mov dword[edx+offs_cont_in_begin],0
mov dword[edx+GLContext.in_begin],0
 
; lights
mov ecx,MAX_LIGHTS
mov eax,edx
add eax,offs_cont_lights
add eax,GLContext.lights
.cycle_0:
gl_V4_New eax+offs_ligh_ambient, 0.0,0.0,0.0,1.0
gl_V4_New eax+offs_ligh_diffuse, 1.0,1.0,1.0,1.0
79,16 → 79,16
cmp ecx,0
jg .cycle_0
 
mov dword[edx+offs_cont_first_light],0 ;NULL
gl_V4_New edx+offs_cont_ambient_light_model, 0.2,0.2,0.2,1.0
mov dword[edx+offs_cont_local_light_model],0
mov dword[edx+offs_cont_lighting_enabled],0
mov dword[edx+offs_cont_light_model_two_side],0
mov dword[edx+GLContext.first_light],0 ;NULL
gl_V4_New edx+GLContext.ambient_light_model, 0.2,0.2,0.2,1.0
mov dword[edx+GLContext.local_light_model],0
mov dword[edx+GLContext.lighting_enabled],0
mov dword[edx+GLContext.light_model_two_side],0
 
; default materials
mov ecx,2 ;for(i=0;i<2;i++)
mov eax,edx
add eax,offs_cont_materials
add eax,GLContext.materials
@@:
gl_V4_New eax+offs_mate_emission, 0.0,0.0,0.0,1.0
gl_V4_New eax+offs_mate_ambient, 0.2,0.2,0.2,1.0
98,54 → 98,54
add eax,sizeof.GLMaterial
loop @b
 
mov dword[edx+offs_cont_current_color_material_mode],GL_FRONT_AND_BACK
mov dword[edx+offs_cont_current_color_material_type],GL_AMBIENT_AND_DIFFUSE
mov dword[edx+offs_cont_color_material_enabled],0
mov dword[edx+GLContext.current_color_material_mode],GL_FRONT_AND_BACK
mov dword[edx+GLContext.current_color_material_type],GL_AMBIENT_AND_DIFFUSE
mov dword[edx+GLContext.color_material_enabled],0
 
; textures
stdcall glInitTextures,edx
 
; default state
gl_V4_New edx+offs_cont_current_color, 1.0,1.0,1.0,1.0
gl_V3_New edx+offs_cont_longcurrent_color, 65535,65535,65535
gl_V4_New edx+GLContext.current_color, 1.0,1.0,1.0,1.0
gl_V3_New edx+GLContext.longcurrent_color, 65535,65535,65535
 
gl_V4_New edx+offs_cont_current_normal, 1.0,0.0,0.0,0.0
gl_V4_New edx+GLContext.current_normal, 1.0,0.0,0.0,0.0
 
mov dword[edx+offs_cont_current_edge_flag],1
mov dword[edx+GLContext.current_edge_flag],1
gl_V4_New edx+offs_cont_current_tex_coord, 0.0,0.0,0.0,1.0
gl_V4_New edx+GLContext.current_tex_coord, 0.0,0.0,0.0,1.0
 
mov dword[edx+offs_cont_polygon_mode_front],GL_FILL
mov dword[edx+offs_cont_polygon_mode_back],GL_FILL
mov dword[edx+GLContext.polygon_mode_front],GL_FILL
mov dword[edx+GLContext.polygon_mode_back],GL_FILL
 
mov dword[edx+offs_cont_current_front_face],0 ;0 = GL_CCW 1 = GL_CW
mov dword[edx+offs_cont_current_cull_face],GL_BACK
mov dword[edx+offs_cont_current_shade_model],GL_SMOOTH
mov dword[edx+offs_cont_cull_face_enabled],0
mov dword[edx+GLContext.current_front_face],0 ;0 = GL_CCW 1 = GL_CW
mov dword[edx+GLContext.current_cull_face],GL_BACK
mov dword[edx+GLContext.current_shade_model],GL_SMOOTH
mov dword[edx+GLContext.cull_face_enabled],0
; clear
gl_V4_New edx+offs_cont_clear_color, 0.0,0.0,0.0,0.0
mov dword[edx+offs_cont_clear_depth],0
gl_V4_New edx+GLContext.clear_color, 0.0,0.0,0.0,0.0
mov dword[edx+GLContext.clear_depth],0
 
; selection
mov dword[edx+offs_cont_render_mode],GL_RENDER
mov dword[edx+offs_cont_select_buffer],0 ;NULL
mov dword[edx+offs_cont_name_stack_size],0
mov dword[edx+GLContext.render_mode],GL_RENDER
mov dword[edx+GLContext.select_buffer],0 ;NULL
mov dword[edx+GLContext.name_stack_size],0
 
; matrix
mov dword[edx+offs_cont_matrix_mode],0
mov dword[edx+GLContext.matrix_mode],0
 
gl_V3_New edx+offs_cont_matrix_stack_depth_max,\
gl_V3_New edx+GLContext.matrix_stack_depth_max,\
MAX_MODELVIEW_STACK_DEPTH,MAX_PROJECTION_STACK_DEPTH,MAX_TEXTURE_STACK_DEPTH
 
mov ecx,3 ;for(i=0;i<3;i++)
mov ebx,edx
@@:
mov edi,[ebx+offs_cont_matrix_stack_depth_max]
mov edi,[ebx+GLContext.matrix_stack_depth_max]
shl edi,6 ;вместо imul edi,sizeof(M4)
stdcall gl_zalloc,edi
mov [ebx+offs_cont_matrix_stack],eax
mov [ebx+offs_cont_matrix_stack_ptr],eax
mov [ebx+GLContext.matrix_stack],eax
mov [ebx+GLContext.matrix_stack_ptr],eax
add ebx,4
loop @b
 
156,24 → 156,24
stdcall glMatrixMode,GL_MODELVIEW
call glLoadIdentity
 
mov dword[edx+offs_cont_matrix_model_projection_updated],1
mov dword[edx+GLContext.matrix_model_projection_updated],1
 
; opengl 1.1 arrays
mov dword[edx+offs_cont_client_states],0
mov dword[edx+GLContext.client_states],0
; opengl 1.1 polygon offset
mov dword[edx+offs_cont_offset_states],0
mov dword[edx+GLContext.offset_states],0
; clear the resize callback function pointer
mov dword[edx+offs_cont_gl_resize_viewport],0 ;NULL
mov dword[edx+GLContext.gl_resize_viewport],0 ;NULL
; specular buffer
mov dword[edx+offs_cont_specbuf_first],0 ;NULL
mov dword[edx+offs_cont_specbuf_used_counter],0
mov dword[edx+offs_cont_specbuf_num_buffers],0
mov dword[edx+GLContext.specbuf_first],0 ;NULL
mov dword[edx+GLContext.specbuf_used_counter],0
mov dword[edx+GLContext.specbuf_num_buffers],0
 
; depth test
mov dword[edx+offs_cont_depth_test],0
mov dword[edx+GLContext.depth_test],0
 
ret
endp
/programs/develop/libraries/TinyGL/asm_fork/kosgl.asm
67,7 → 67,7
dec dword[ecx]
 
mov ebx,[context]
mov edx,[ebx+offs_cont_opaque] ; edx = (TinyGLContext *)context.opaque
mov edx,[ebx+GLContext.opaque] ; edx = (TinyGLContext *)context.opaque
mov [edx+4],edi
mov [edx+12],edi ;d_x = xsize
mov [edx+8],esi
74,7 → 74,7
mov [edx+16],esi ;d_y = ysize
 
; resize the Z buffer
stdcall ZB_resize, dword[ebx+offs_cont_zb],0,edi,esi
stdcall ZB_resize, dword[ebx+GLContext.zb],0,edi,esi
.end_f:
ret
endp
112,12 → 112,12
call gl_get_context
mov [ebx],eax ;ctx.gl_context = eax
 
mov [eax+offs_cont_opaque],ebx ;ctx.gl_context.opaque = ctx
mov dword[eax+offs_cont_gl_resize_viewport],gl_resize_viewport
mov [eax+GLContext.opaque],ebx ;ctx.gl_context.opaque = ctx
mov dword[eax+GLContext.gl_resize_viewport],gl_resize_viewport
 
; set the viewport : we force a call to gl_resize_viewport
dec dword[eax+offs_cont_viewport+offs_vpor_xsize]
dec dword[eax+offs_cont_viewport+offs_vpor_ysize]
dec dword[eax+GLContext.viewport+offs_vpor_xsize]
dec dword[eax+GLContext.viewport+offs_vpor_ysize]
 
stdcall glViewport, 0, 0, [win_x], [win_y]
.end_f:
131,9 → 131,9
proc kosglSwapBuffers uses eax ebx ecx edx esi
; retrieve the current TinyGLContext
call gl_get_context
mov ebx,[eax+offs_cont_zb]
mov ebx,[eax+GLContext.zb]
mov ebx,[ebx+offs_zbuf_pbuf]
mov esi,[eax+offs_cont_opaque] ;esi = &context.opaque
mov esi,[eax+GLContext.opaque] ;esi = &context.opaque
mov eax,7
mov ecx,[esi+12] ;d_x
shl ecx,16
/programs/develop/libraries/TinyGL/asm_fork/light.asm
17,7 → 17,7
mov ecx,GL_BACK
@@:
mov edi,eax
add edi,offs_cont_materials
add edi,GLContext.materials
cmp ecx,GL_FRONT ;if (mode == GL_FRONT) m=&context.materials[0]
je @f
add edi,sizeof.GLMaterial ;else m=&context.materials[1]
88,9 → 88,9
mov eax,[context]
mov ebx,[p]
mov ecx,[ebx+4] ;ecx = p[1]
mov dword[eax+offs_cont_current_color_material_mode],ecx
mov dword[eax+GLContext.current_color_material_mode],ecx
mov ecx,[ebx+8] ;ecx = p[2]
mov dword[eax+offs_cont_current_color_material_type],ecx
mov dword[eax+GLContext.current_color_material_type],ecx
ret
endp
 
109,7 → 109,7
sub edx,GL_LIGHT0
imul edx,sizeof.GLLight
add edx,eax
add edx,offs_cont_lights
add edx,GLContext.lights
 
mov ecx,[ebx+8] ;ecx = p[2]
cmp ecx,GL_AMBIENT
151,7 → 151,7
add edi,12 ;&p[3]
mov esi,ebp
sub esi,16 ;&pos
stdcall gl_M4_MulV4, esi,dword[eax+offs_cont_matrix_stack_ptr],edi
stdcall gl_M4_MulV4, esi,dword[eax+GLContext.matrix_stack_ptr],edi
mov edi,edx
add edi,offs_ligh_position
mov ecx,4
267,7 → 267,7
cmp ebx,GL_LIGHT_MODEL_AMBIENT
jne @f
mov ecx,4
add edi,offs_cont_ambient_light_model
add edi,GLContext.ambient_light_model
rep movsd ;for(i=0;i<4;i++) context.ambient_light_model.v[i]=v[i]
jmp .end_f
align 4
275,7 → 275,7
cmp ebx,GL_LIGHT_MODEL_LOCAL_VIEWER
jne @f
fld dword[esi] ;st0 = p[2]
fistp dword[edi+offs_cont_local_light_model]
fistp dword[edi+GLContext.local_light_model]
jmp .end_f
align 4
@@:
282,7 → 282,7
cmp ebx,GL_LIGHT_MODEL_TWO_SIDE
jne @f
fld dword[esi] ;st0 = p[2]
fistp dword[edi+offs_cont_light_model_two_side]
fistp dword[edi+GLContext.light_model_two_side]
jmp .end_f
align 4
@@: ;default:
327,7 → 327,7
mov ebx,[light]
imul ebx,sizeof.GLLight
add ebx,eax
add ebx,offs_cont_lights
add ebx,GLContext.lights
 
xor ecx,ecx
cmp dword[ebx+offs_ligh_enabled],0
339,9 → 339,9
jz @f
;if (v && !l.enabled)
mov dword[ebx+offs_ligh_enabled],1
mov ecx,[eax+offs_cont_first_light]
mov ecx,[eax+GLContext.first_light]
mov [ebx+offs_ligh_next],ecx
mov [eax+offs_cont_first_light],ebx ;context.first_light = l
mov [eax+GLContext.first_light],ebx ;context.first_light = l
mov dword[ebx+offs_ligh_prev],0 ;l.prev = NULL
jmp .end_f
align 4
359,7 → 359,7
mov ecx,[ebx+offs_ligh_next]
cmp dword[ebx+offs_ligh_prev],0 ;if (l.prev == NULL)
jne .els_0
mov [eax+offs_cont_first_light],ecx ;context.first_light = l.next
mov [eax+GLContext.first_light],ecx ;context.first_light = l.next
jmp @f
align 4
.els_0:
416,8 → 416,8
mov esi,[v]
mov edx,[context]
mov ecx,edx
add ecx,offs_cont_materials ;ecx(m) = &context.materials[0]
mov eax,[edx+offs_cont_light_model_two_side]
add ecx,GLContext.materials ;ecx(m) = &context.materials[0]
mov eax,[edx+GLContext.light_model_two_side]
mov [twoside],eax
 
add esi,offs_vert_normal
428,15 → 428,15
movsd ;n.Z=v.normal.Z
mov esi,[v]
 
fld dword[edx+offs_cont_ambient_light_model]
fld dword[edx+GLContext.ambient_light_model]
fmul dword[ecx+offs_mate_ambient]
fadd dword[ecx] ;offs_mate_emission=0
fstp dword[R] ;R=m.emission.v[0]+m.ambient.v[0]*context.ambient_light_model.v[0]
fld dword[edx+offs_cont_ambient_light_model+4]
fld dword[edx+GLContext.ambient_light_model+4]
fmul dword[ecx+offs_mate_ambient+4]
fadd dword[ecx+offs_mate_emission+4]
fstp dword[G]
fld dword[edx+offs_cont_ambient_light_model+8]
fld dword[edx+GLContext.ambient_light_model+8]
fmul dword[ecx+offs_mate_ambient+8]
fadd dword[ecx+offs_mate_emission+8]
fstp dword[B]
443,7 → 443,7
clampf [ecx+offs_mate_diffuse+12],0,1
mov [A],eax ;A=clampf(m.diffuse.v[3],0,1)
 
mov ebx,[edx+offs_cont_first_light]
mov ebx,[edx+GLContext.first_light]
.cycle_0: ;for(l=context.first_light;l!=NULL;l=l.next)
or ebx,ebx
jz .cycle_0_end
637,7 → 637,7
.if1_end:
 
; specular light
cmp dword[edx+offs_cont_local_light_model],0 ;if (c.local_light_model)
cmp dword[edx+GLContext.local_light_model],0 ;if (c.local_light_model)
je .els_2
mov eax,[esi+offs_vert_ec]
mov [vcoord],eax ;vcoord.X=v.ec.X
/programs/develop/libraries/TinyGL/asm_fork/list.asm
28,7 → 28,7
align 4
proc find_list uses ebx, context:dword, list:dword
mov eax,[context]
mov eax,[eax+offs_cont_shared_state]
mov eax,[eax+GLContext.shared_state]
mov ebx,[list]
shl ebx,2
add eax,ebx
57,7 → 57,7
stdcall gl_free,edx
mov ecx,[list]
shl ecx,2
mov ebx,[ebx+offs_cont_shared_state] ;ebx = &context.shared_state.lists
mov ebx,[ebx+GLContext.shared_state] ;ebx = &context.shared_state.lists
add ebx,ecx
mov dword[ebx],0 ;=NULL
ret
75,7 → 75,7
mov dword[ecx+offs_gpbu_ops],OP_EndList ;ob.ops[0].op=OP_EndList
 
mov ebx,[context]
mov ebx,[ebx+offs_cont_shared_state]
mov ebx,[ebx+GLContext.shared_state]
mov ecx,[list]
shl ecx,2
add ebx,ecx
122,8 → 122,8
shl ecx,2
add ecx,ebx
mov ecx,[ecx] ;ecx = кол-во параметров в компилируемой функции
mov ebx,[edx+offs_cont_current_op_buffer_index]
mov eax,[edx+offs_cont_current_op_buffer]
mov ebx,[edx+GLContext.current_op_buffer_index]
mov eax,[edx+GLContext.current_op_buffer]
 
; we should be able to add a NextBuffer opcode
mov esi,ebx
141,7 → 141,7
mov dword[esi+offs_gpbu_ops],OP_NextBuffer
mov dword[esi+offs_gpbu_ops+4],eax
 
mov dword[edx+offs_cont_current_op_buffer],eax
mov dword[edx+GLContext.current_op_buffer],eax
xor ebx,ebx
@@:
 
153,7 → 153,7
movsd
inc ebx
loop @b
mov dword[edx+offs_cont_current_op_buffer_index],ebx
mov dword[edx+GLContext.current_op_buffer_index],ebx
popad
ret
endp
221,7 → 221,7
call gl_get_context
mov ebx,[p]
 
cmp dword[eax+offs_cont_exec_flag],0
cmp dword[eax+GLContext.exec_flag],0
je @f
push ebx
push eax
232,11 → 232,11
call dword[ecx] ;op_table_func[op](c,p)
@@:
call gl_get_context
cmp dword[eax+offs_cont_compile_flag],0
cmp dword[eax+GLContext.compile_flag],0
je @f
stdcall gl_compile_op,eax,[p]
@@:
cmp dword[eax+offs_cont_print_flag],0
cmp dword[eax+GLContext.print_flag],0
je @f
;gl_print_op(stderr,p);
@@:
312,16 → 312,16
stdcall alloc_list,ebx,[list]
 
mov eax,[eax] ;eax = GLList.first_op_buffer
mov [ebx+offs_cont_current_op_buffer],eax
mov dword[ebx+offs_cont_current_op_buffer_index],0
mov [ebx+GLContext.current_op_buffer],eax
mov dword[ebx+GLContext.current_op_buffer_index],0
 
mov dword[ebx+offs_cont_compile_flag],1
mov dword[ebx+GLContext.compile_flag],1
xor eax,eax
cmp dword[mode],GL_COMPILE_AND_EXECUTE
jne @f
inc eax ;eax = (mode == GL_COMPILE_AND_EXECUTE)
@@:
mov [ebx+offs_cont_exec_flag],eax
mov [ebx+GLContext.exec_flag],eax
ret
endp
 
340,8 → 340,8
sub ebx,4 ;=sizeof(dd)
stdcall gl_compile_op,eax,ebx
 
mov dword[eax+offs_cont_compile_flag],0
mov dword[eax+offs_cont_exec_flag],1
mov dword[eax+GLContext.compile_flag],0
mov dword[eax+GLContext.exec_flag],1
ret
endp
 
363,7 → 363,7
call gl_get_context
mov edi,eax
 
mov ebx,[eax+offs_cont_shared_state] ;ebx=context.shared_state.lists
mov ebx,[eax+GLContext.shared_state] ;ebx=context.shared_state.lists
xor edx,edx ;count=0
mov ecx,MAX_DISPLAY_LISTS
xor esi,esi
/programs/develop/libraries/TinyGL/asm_fork/matrix.asm
60,11 → 60,11
{
local .end_0
xor reg,reg
cmp dword[context+offs_cont_matrix_mode],1
cmp dword[context+GLContext.matrix_mode],1
jg .end_0
inc reg
.end_0:
mov dword[context+offs_cont_matrix_model_projection_updated],reg
mov dword[context+GLContext.matrix_model_projection_updated],reg
}
 
align 4
74,17 → 74,17
 
cmp dword[ebx+4],GL_MODELVIEW ;cmp p[1],...
jne @f
mov dword[eax+offs_cont_matrix_mode],0
mov dword[eax+GLContext.matrix_mode],0
jmp .end_f
@@:
cmp dword[ebx+4],GL_PROJECTION
jne @f
mov dword[eax+offs_cont_matrix_mode],1
mov dword[eax+GLContext.matrix_mode],1
jmp .end_f
@@:
cmp dword[ebx+4],GL_TEXTURE
jne .def
mov dword[eax+offs_cont_matrix_mode],2
mov dword[eax+GLContext.matrix_mode],2
jmp .end_f
.def:
;assert(0);
95,10 → 95,10
align 4
proc glopLoadMatrix uses eax edi esi, context:dword, p:dword
mov eax,[context]
mov edi,[eax+offs_cont_matrix_mode]
mov edi,[eax+GLContext.matrix_mode]
shl edi,2
add edi,eax
mov edi,dword[edi+offs_cont_matrix_stack_ptr]
mov edi,dword[edi+GLContext.matrix_stack_ptr]
 
mov esi,[p]
add esi,4
111,11 → 111,11
align 4
proc glopLoadIdentity uses eax ebx, context:dword, p:dword
mov eax,[context]
mov ebx,[eax+offs_cont_matrix_mode]
mov ebx,[eax+GLContext.matrix_mode]
shl ebx,2
add ebx,eax
 
stdcall gl_M4_Id,[ebx+offs_cont_matrix_stack_ptr]
stdcall gl_M4_Id,[ebx+GLContext.matrix_stack_ptr]
gl_matrix_update eax,ebx
ret
endp
132,10 → 132,10
stdcall gl_M4_Transpose,edi,esi ;транспонируем входную матрицу в локальную матрицу m
 
mov eax,[context]
mov esi,[eax+offs_cont_matrix_mode]
mov esi,[eax+GLContext.matrix_mode]
shl esi,2
add esi,eax
stdcall gl_M4_MulLeft,dword[esi+offs_cont_matrix_stack_ptr],edi
stdcall gl_M4_MulLeft,dword[esi+GLContext.matrix_stack_ptr],edi
 
gl_matrix_update eax,edi
ret
144,7 → 144,7
align 4
proc glopPushMatrix uses eax ebx, context:dword, p:dword
mov eax,[context]
mov ebx,[eax+offs_cont_matrix_mode]
mov ebx,[eax+GLContext.matrix_mode]
 
; assert( (c->matrix_stack_ptr[ebx] - c->matrix_stack[ebx] + 1 )
; < c->matrix_stack_depth_max[ebx] );
151,7 → 151,7
 
shl ebx,2
add ebx,eax
add ebx,offs_cont_matrix_stack_ptr
add ebx,GLContext.matrix_stack_ptr
add dword[ebx],sizeof.M4
mov ebx,[ebx] ;ebx = ++context.matrix_stack_ptr[context.matrix_mode]
 
167,13 → 167,13
align 4
proc glopPopMatrix uses eax ebx, context:dword, p:dword
mov eax,[context]
mov ebx,[eax+offs_cont_matrix_mode]
mov ebx,[eax+GLContext.matrix_mode]
 
; assert( c->matrix_stack_ptr[n] > c->matrix_stack[n] );
 
shl ebx,2
add ebx,eax
sub dword[ebx+offs_cont_matrix_stack_ptr],sizeof.M4
sub dword[ebx+GLContext.matrix_stack_ptr],sizeof.M4
 
gl_matrix_update eax,ebx
ret
424,10 → 424,10
.end_sw:
 
mov eax,[context]
mov ebx,[eax+offs_cont_matrix_mode]
mov ebx,[eax+GLContext.matrix_mode]
shl ebx,2
add ebx,eax
stdcall gl_M4_MulLeft,dword[ebx+offs_cont_matrix_stack_ptr],ecx
stdcall gl_M4_MulLeft,dword[ebx+GLContext.matrix_stack_ptr],ecx
gl_matrix_update eax,ebx
jmp .end_f
.f2:
444,10 → 444,10
mov ecx,[p]
 
mov eax,[context]
mov ebx,[eax+offs_cont_matrix_mode]
mov ebx,[eax+GLContext.matrix_mode]
shl ebx,2
add ebx,eax
mov ebx,[ebx+offs_cont_matrix_stack_ptr] ;ebx = &m[0]
mov ebx,[ebx+GLContext.matrix_stack_ptr] ;ebx = &m[0]
 
fld dword[ecx+ 4] ;x
fld dword[ecx+ 8] ;y
481,10 → 481,10
mov ecx,[p]
 
mov eax,[context]
mov ebx,[eax+offs_cont_matrix_mode]
mov ebx,[eax+GLContext.matrix_mode]
shl ebx,2
add ebx,eax
mov ebx,[ebx+offs_cont_matrix_stack_ptr] ;ebx = &m[0]
mov ebx,[ebx+GLContext.matrix_stack_ptr] ;ebx = &m[0]
 
fld dword[ecx+ 4] ;x
fld dword[ecx+ 8] ;y
594,14 → 594,14
mov dword[ecx+56],-1.0
mov dword[ecx+60],0.0
 
mov ebx,[eax+offs_cont_matrix_mode]
mov ebx,[eax+GLContext.matrix_mode]
shl ebx,2
add ebx,eax
stdcall gl_M4_MulLeft,dword[ebx+offs_cont_matrix_stack_ptr],ecx
stdcall gl_M4_MulLeft,dword[ebx+GLContext.matrix_stack_ptr],ecx
 
if DEBUG ;glopFrustum
stdcall gl_print_matrix,ecx,4
stdcall gl_print_matrix,dword[ebx+offs_cont_matrix_stack_ptr],4
stdcall gl_print_matrix,dword[ebx+GLContext.matrix_stack_ptr],4
end if
gl_matrix_update eax,ebx
ret
/programs/develop/libraries/TinyGL/asm_fork/misc.asm
23,16 → 23,16
 
; we may need to resize the zbuffer
 
cmp dword[edx+offs_cont_viewport+offs_vpor_ysize],ecx
cmp dword[edx+GLContext.viewport+offs_vpor_ysize],ecx
jne @f
mov ecx,[xmin]
cmp dword[edx+offs_cont_viewport+offs_vpor_xmin],ecx
cmp dword[edx+GLContext.viewport+offs_vpor_xmin],ecx
jne @f
mov ecx,[ymin]
cmp dword[edx+offs_cont_viewport+offs_vpor_ymin],ecx
cmp dword[edx+GLContext.viewport+offs_vpor_ymin],ecx
jne @f
mov ecx,[xsize]
cmp dword[edx+offs_cont_viewport+offs_vpor_xsize],ecx
cmp dword[edx+GLContext.viewport+offs_vpor_xsize],ecx
jne @f
jmp .end_f
@@:
44,7 → 44,7
add ecx,[ysize]
mov [ysize_req],ecx ;ysize_req = ymin + ysize
 
cmp dword[edx+offs_cont_gl_resize_viewport],0
cmp dword[edx+GLContext.gl_resize_viewport],0
je @f
mov eax,ebp
sub eax,4
51,7 → 51,7
push eax
sub eax,4
push eax
stdcall dword[edx+offs_cont_gl_resize_viewport], edx ;gl_resize_viewport(context,&xsize_req,&ysize_req)
stdcall dword[edx+GLContext.gl_resize_viewport], edx ;gl_resize_viewport(context,&xsize_req,&ysize_req)
cmp eax,0
je @f
stdcall dbg_print,sz_glViewport,err_4
70,15 → 70,15
stdcall dbg_print,sz_glViewport,err_5
@@:
mov ecx,[xmin]
mov dword[edx+offs_cont_viewport+offs_vpor_xmin],ecx
mov dword[edx+GLContext.viewport+offs_vpor_xmin],ecx
mov ecx,[ymin]
mov dword[edx+offs_cont_viewport+offs_vpor_ymin],ecx
mov dword[edx+GLContext.viewport+offs_vpor_ymin],ecx
mov ecx,[xsize]
mov dword[edx+offs_cont_viewport+offs_vpor_xsize],ecx
mov dword[edx+GLContext.viewport+offs_vpor_xsize],ecx
mov ecx,[ysize]
mov dword[edx+offs_cont_viewport+offs_vpor_ysize],ecx
mov dword[edx+GLContext.viewport+offs_vpor_ysize],ecx
 
mov dword[edx+offs_cont_viewport+offs_vpor_updated],1
mov dword[edx+GLContext.viewport+offs_vpor_updated],1
.end_f:
ret
endp
92,32 → 92,32
 
cmp ebx,GL_CULL_FACE
jne @f
mov [eax+offs_cont_cull_face_enabled],ecx
mov [eax+GLContext.cull_face_enabled],ecx
jmp .end_f
@@:
cmp ebx,GL_LIGHTING
jne @f
mov [eax+offs_cont_lighting_enabled],ecx
mov [eax+GLContext.lighting_enabled],ecx
jmp .end_f
@@:
cmp ebx,GL_COLOR_MATERIAL
jne @f
mov [eax+offs_cont_color_material_enabled],ecx
mov [eax+GLContext.color_material_enabled],ecx
jmp .end_f
@@:
cmp ebx,GL_TEXTURE_2D
jne @f
mov [eax+offs_cont_texture_2d_enabled],ecx
mov [eax+GLContext.texture_2d_enabled],ecx
jmp .end_f
@@:
cmp ebx,GL_NORMALIZE
jne @f
mov [eax+offs_cont_normalize_enabled],ecx
mov [eax+GLContext.normalize_enabled],ecx
jmp .end_f
@@:
cmp ebx,GL_DEPTH_TEST
jne @f
mov [eax+offs_cont_depth_test],ecx
mov [eax+GLContext.depth_test],ecx
jmp .end_f
@@:
cmp ebx,GL_POLYGON_OFFSET_FILL
124,10 → 124,10
jne .polygon_offset_fill
cmp ecx,0
je @f
or dword[eax+offs_cont_offset_states],TGL_OFFSET_FILL
or dword[eax+GLContext.offset_states],TGL_OFFSET_FILL
jmp .end_f
@@:
and dword[eax+offs_cont_offset_states],not TGL_OFFSET_FILL
and dword[eax+GLContext.offset_states],not TGL_OFFSET_FILL
jmp .end_f
.polygon_offset_fill:
cmp ebx,GL_POLYGON_OFFSET_POINT
134,10 → 134,10
jne .polygon_offset_point
cmp ecx,0
je @f
or dword[eax+offs_cont_offset_states],TGL_OFFSET_POINT
or dword[eax+GLContext.offset_states],TGL_OFFSET_POINT
jmp .end_f
@@:
and dword[eax+offs_cont_offset_states],not TGL_OFFSET_POINT
and dword[eax+GLContext.offset_states],not TGL_OFFSET_POINT
jmp .end_f
.polygon_offset_point:
cmp ebx,GL_POLYGON_OFFSET_LINE
144,10 → 144,10
jne .polygon_offset_line
cmp ecx,0
je @f
or dword[eax+offs_cont_offset_states],TGL_OFFSET_LINE
or dword[eax+GLContext.offset_states],TGL_OFFSET_LINE
jmp .end_f
@@:
and dword[eax+offs_cont_offset_states],not TGL_OFFSET_LINE
and dword[eax+GLContext.offset_states],not TGL_OFFSET_LINE
jmp .end_f
.polygon_offset_line: ;default:
cmp ebx,GL_LIGHT0
158,7 → 158,7
stdcall gl_enable_disable_light, eax,ebx,ecx
jmp .end_f
.els_0:
;//fprintf(stderr,"glEnableDisable: 0x%X not supported.\n",code);
;fprintf(stderr,"glEnableDisable: 0x%X not supported.\n",code);
.end_f:
ret
endp
168,7 → 168,7
mov eax,[context]
mov ebx,[p]
mov ebx,[ebx+4]
mov [eax+offs_cont_current_shade_model],ebx
mov [eax+GLContext.current_shade_model],ebx
ret
endp
 
177,7 → 177,7
mov eax,[context]
mov ebx,[p]
mov ebx,[ebx+4]
mov [eax+offs_cont_current_cull_face],ebx
mov [eax+GLContext.current_cull_face],ebx
ret
endp
 
186,7 → 186,7
mov eax,[context]
mov ebx,[p]
mov ebx,[ebx+4]
mov [eax+offs_cont_current_front_face],ebx
mov [eax+GLContext.current_front_face],ebx
ret
endp
 
198,20 → 198,20
cmp dword[ebx+4],GL_BACK
jne @f
mov ebx,[ebx+8]
mov [eax+offs_cont_polygon_mode_back],ebx
mov [eax+GLContext.polygon_mode_back],ebx
jmp .end_f
@@:
cmp dword[ebx+4],GL_FRONT
jne @f
mov ebx,[ebx+8]
mov [eax+offs_cont_polygon_mode_front],ebx
mov [eax+GLContext.polygon_mode_front],ebx
jmp .end_f
@@:
cmp dword[ebx+4],GL_FRONT_AND_BACK
jne @f
mov ebx,[ebx+8]
mov [eax+offs_cont_polygon_mode_front],ebx
mov [eax+offs_cont_polygon_mode_back],ebx
mov [eax+GLContext.polygon_mode_front],ebx
mov [eax+GLContext.polygon_mode_back],ebx
jmp .end_f
@@:
; assert(0);
235,8 → 235,8
mov eax,[context]
mov ebx,[p]
mov ecx,[ebx+4]
mov [eax+offs_cont_offset_factor],ecx
mov [eax+GLContext.offset_factor],ecx
mov ecx,[ebx+8]
mov [eax+offs_cont_offset_units],ecx
mov [eax+GLContext.offset_units],ecx
ret
endp
/programs/develop/libraries/TinyGL/asm_fork/select.asm
4,21 → 4,21
call gl_get_context
xor ebx,ebx
 
cmp dword[eax+offs_cont_render_mode],GL_RENDER
cmp dword[eax+GLContext.render_mode],GL_RENDER
je .e_sw_1
cmp dword[eax+offs_cont_render_mode],GL_SELECT
cmp dword[eax+GLContext.render_mode],GL_SELECT
jne .def_1
cmp dword[eax+offs_cont_select_overflow],0
cmp dword[eax+GLContext.select_overflow],0
je @f
sub ebx,[eax+offs_cont_select_hits]
sub ebx,[eax+GLContext.select_hits]
jmp .else_e
@@:
mov ebx,[eax+offs_cont_select_hits]
mov ebx,[eax+GLContext.select_hits]
.else_e:
mov dword[eax+offs_cont_select_overflow],0
mov ecx,[eax+offs_cont_select_buffer]
mov dword[eax+offs_cont_select_ptr],ecx
mov dword[eax+offs_cont_name_stack_size],0
mov dword[eax+GLContext.select_overflow],0
mov ecx,[eax+GLContext.select_buffer]
mov dword[eax+GLContext.select_ptr],ecx
mov dword[eax+GLContext.name_stack_size],0
jmp .e_sw_1
.def_1:
; assert(0);
25,18 → 25,18
.e_sw_1:
cmp dword[mode],GL_RENDER
jne @f
mov dword[eax+offs_cont_render_mode],GL_RENDER
mov dword[eax+GLContext.render_mode],GL_RENDER
jmp .e_sw_2
@@:
cmp dword[mode],GL_SELECT
jne .def_2
mov dword[eax+offs_cont_render_mode],GL_SELECT
mov dword[eax+GLContext.render_mode],GL_SELECT
; assert( c->select_buffer != NULL);
mov ecx,[eax+offs_cont_select_buffer]
mov dword[eax+offs_cont_select_ptr],ecx
mov dword[eax+offs_cont_select_hits],0
mov dword[eax+offs_cont_select_overflow],0
mov dword[eax+offs_cont_select_hit],0 ;NULL
mov ecx,[eax+GLContext.select_buffer]
mov dword[eax+GLContext.select_ptr],ecx
mov dword[eax+GLContext.select_hits],0
mov dword[eax+GLContext.select_overflow],0
mov dword[eax+GLContext.select_hit],0 ;NULL
jmp .e_sw_2
.def_2:
; assert(0);
52,9 → 52,9
; assert(c->render_mode != GL_SELECT);
mov ebx,[buf]
mov dword[eax+offs_cont_select_buffer],ebx
mov dword[eax+GLContext.select_buffer],ebx
mov ebx,[size]
mov dword[eax+offs_cont_select_size],ebx
mov dword[eax+GLContext.select_size],ebx
ret
endp
 
61,10 → 61,10
align 4
proc glopInitNames uses eax, context:dword, p:dword
mov eax,[context]
cmp dword[eax+offs_cont_render_mode],GL_SELECT
cmp dword[eax+GLContext.render_mode],GL_SELECT
jne @f
mov dword[eax+offs_cont_name_stack_size],0
mov dword[eax+offs_cont_select_hit],0 ;=NULL
mov dword[eax+GLContext.name_stack_size],0
mov dword[eax+GLContext.select_hit],0 ;=NULL
@@:
ret
endp
72,17 → 72,17
align 4
proc glopPushName uses eax ebx, context:dword, p:dword
mov eax,[context]
cmp dword[eax+offs_cont_render_mode],GL_SELECT
cmp dword[eax+GLContext.render_mode],GL_SELECT
jne @f
; assert(c->name_stack_size<MAX_NAME_STACK_DEPTH);
mov dword[eax+offs_cont_select_hit],0 ;=NULL
inc dword[eax+offs_cont_name_stack_size]
mov ebx,dword[eax+offs_cont_name_stack_size]
mov dword[eax+GLContext.select_hit],0 ;=NULL
inc dword[eax+GLContext.name_stack_size]
mov ebx,dword[eax+GLContext.name_stack_size]
shl ebx,2
add ebx,eax
mov eax,[p]
mov eax,[eax+4]
mov dword[ebx+offs_cont_name_stack],eax ;context.name_stack[context.name_stack_size++]=p[1]
mov dword[ebx+GLContext.name_stack],eax ;context.name_stack[context.name_stack_size++]=p[1]
@@:
ret
endp
90,11 → 90,11
align 4
proc glopPopName uses eax, context:dword, p:dword
mov eax,[context]
cmp dword[eax+offs_cont_render_mode],GL_SELECT
cmp dword[eax+GLContext.render_mode],GL_SELECT
jne @f
; assert(c->name_stack_size>0);
dec dword[eax+offs_cont_name_stack_size]
mov dword[eax+offs_cont_select_hit],0 ;=NULL
dec dword[eax+GLContext.name_stack_size]
mov dword[eax+GLContext.select_hit],0 ;=NULL
@@:
ret
endp
102,17 → 102,17
align 4
proc glopLoadName uses eax ebx, context:dword, p:dword
mov eax,[context]
cmp dword[eax+offs_cont_render_mode],GL_SELECT
cmp dword[eax+GLContext.render_mode],GL_SELECT
jne @f
; assert(c->name_stack_size>0);
mov dword[eax+offs_cont_select_hit],0 ;=NULL
mov ebx,dword[eax+offs_cont_name_stack_size]
mov dword[eax+GLContext.select_hit],0 ;=NULL
mov ebx,dword[eax+GLContext.name_stack_size]
dec ebx
shl ebx,2
add ebx,eax
mov eax,[p]
mov eax,[eax+4]
mov dword[ebx+offs_cont_name_stack],eax ;context.name_stack[context.name_stack_size-1]=p[1]
mov dword[ebx+GLContext.name_stack],eax ;context.name_stack[context.name_stack_size-1]=p[1]
@@:
ret
endp
123,23 → 123,23
; int i;
mov eax,[context]
 
cmp dword[eax+offs_cont_select_overflow],0
cmp dword[eax+GLContext.select_overflow],0
jne .end_f ;if (!context.select_overflow)
cmp dword[eax+offs_cont_select_hit],0 ;if (context.select_hit==NULL)
cmp dword[eax+GLContext.select_hit],0 ;if (context.select_hit==NULL)
jne .els_0
mov ecx,[eax+offs_cont_name_stack_size]
mov ebx,[eax+offs_cont_select_ptr]
sub ebx,[eax+offs_cont_select_buffer]
mov ecx,[eax+GLContext.name_stack_size]
mov ebx,[eax+GLContext.select_ptr]
sub ebx,[eax+GLContext.select_buffer]
sub ebx,3
sub ebx,ecx
cmp ebx,[eax+offs_cont_select_size]
cmp ebx,[eax+GLContext.select_size]
jle .els_1
mov dword[eax+offs_cont_select_overflow],1
mov dword[eax+GLContext.select_overflow],1
jmp .end_f
.els_1:
mov ebx,[eax+offs_cont_select_ptr]
mov [eax+offs_cont_select_hit],ebx
mov edx,[eax+offs_cont_name_stack_size]
mov ebx,[eax+GLContext.select_ptr]
mov [eax+GLContext.select_hit],ebx
mov edx,[eax+GLContext.name_stack_size]
mov [ebx],edx
add ebx,4
mov edx,[zmin]
149,19 → 149,19
mov [ebx],edx
add ebx,4
; for(i=0;i<ecx;i++) *ptr++=c->name_stack[i];
mov [eax+offs_cont_select_ptr],ebx
inc dword[eax+offs_cont_select_hits]
mov [eax+GLContext.select_ptr],ebx
inc dword[eax+GLContext.select_hits]
jmp .end_f
.els_0:
mov ebx,[zmin]
cmp dword[eax+offs_cont_select_hit+4],ebx
cmp dword[eax+GLContext.select_hit+4],ebx
jle @f
mov dword[eax+offs_cont_select_hit+4],ebx
mov dword[eax+GLContext.select_hit+4],ebx
@@:
mov ebx,[zmax]
cmp dword[eax+offs_cont_select_hit+8],ebx
cmp dword[eax+GLContext.select_hit+8],ebx
jge .end_f
mov dword[eax+offs_cont_select_hit+8],ebx
mov dword[eax+GLContext.select_hit+8],ebx
.end_f:
ret
endp
/programs/develop/libraries/TinyGL/asm_fork/specbuf.asm
63,7 → 63,7
oldest dd ? ;GLSpecBuf *
endl
mov edx,[context]
mov eax,[edx+offs_cont_specbuf_first]
mov eax,[edx+GLContext.specbuf_first]
mov [found],eax
mov [oldest],eax
mov ebx,[shininess_i]
84,14 → 84,14
cmp dword[found],0 ;if (found) /* hey, found one! */
je @f
mov eax,[found]
mov ecx,[edx+offs_cont_specbuf_used_counter]
mov ecx,[edx+GLContext.specbuf_used_counter]
mov [eax+offs_spec_last_used],ecx ;found.last_used = context.specbuf_used_counter
inc dword[edx+offs_cont_specbuf_used_counter]
inc dword[edx+GLContext.specbuf_used_counter]
jmp .end_f ;return found
@@:
cmp dword[oldest],0 ;if (oldest == NULL || context.specbuf_num_buffers < MAX_SPECULAR_BUFFERS)
je @f
cmp dword[edx+offs_cont_specbuf_num_buffers],MAX_SPECULAR_BUFFERS
cmp dword[edx+GLContext.specbuf_num_buffers],MAX_SPECULAR_BUFFERS
jge .end_1
@@:
; create new buffer
100,13 → 100,13
jnz @f
;gl_fatal_error("could not allocate specular buffer")
@@:
inc dword[edx+offs_cont_specbuf_num_buffers]
mov ecx,[edx+offs_cont_specbuf_first]
inc dword[edx+GLContext.specbuf_num_buffers]
mov ecx,[edx+GLContext.specbuf_first]
mov [eax+offs_spec_next],ecx
mov [edx+offs_cont_specbuf_first],eax
mov ecx,[edx+offs_cont_specbuf_used_counter]
mov [edx+GLContext.specbuf_first],eax
mov ecx,[edx+GLContext.specbuf_used_counter]
mov [eax+offs_spec_last_used],ecx
inc dword[edx+offs_cont_specbuf_used_counter]
inc dword[edx+GLContext.specbuf_used_counter]
mov [eax+offs_spec_shininess_i],ebx
stdcall calc_buf, eax,dword[shininess]
jmp .end_f
115,9 → 115,9
;tgl_trace("overwriting spec buffer :(\n");
mov eax,[oldest]
mov [eax+offs_spec_shininess_i],ebx
mov ecx,[edx+offs_cont_specbuf_used_counter]
mov ecx,[edx+GLContext.specbuf_used_counter]
mov [eax+offs_spec_last_used],ecx
inc dword[edx+offs_cont_specbuf_used_counter]
inc dword[edx+GLContext.specbuf_used_counter]
stdcall calc_buf, eax,dword[shininess]
.end_f:
ret
/programs/develop/libraries/TinyGL/asm_fork/texture.asm
5,7 → 5,7
align 4
proc find_texture uses ebx ecx, context:dword, h:dword
mov ebx,[context]
mov ebx,[ebx+offs_cont_shared_state+4] ;ebx = &texture_hash_table
mov ebx,[ebx+GLContext.shared_state+4] ;ebx = &texture_hash_table
mov eax,[h]
and eax,0xff
shl eax,2
34,7 → 34,7
stdcall find_texture,edx,[h] ;t=find_texture(context,h)
cmp dword[eax+offs_text_prev],0 ;if (t.prev==NULL)
jne .else
mov edx,[edx+offs_cont_shared_state+4] ;edx = &context.shared_state.texture_hash_table[0]
mov edx,[edx+GLContext.shared_state+4] ;edx = &context.shared_state.texture_hash_table[0]
mov ebx,[eax+offs_text_handle]
and ebx,0xff
shl ebx,2
80,7 → 80,7
stdcall gl_zalloc,sizeof.GLTexture
 
mov ebx,[context]
mov ebx,[ebx+offs_cont_shared_state+4] ;ebx = &texture_hash_table
mov ebx,[ebx+GLContext.shared_state+4] ;ebx = &texture_hash_table
mov ecx,[h]
and ecx,0xff
shl ecx,2
105,9 → 105,9
proc glInitTextures uses eax edx, context:dword
; textures
mov edx,[context]
mov dword[edx+offs_cont_texture_2d_enabled],0
mov dword[edx+GLContext.texture_2d_enabled],0
stdcall find_texture,edx,0
mov dword[edx+offs_cont_current_texture],eax
mov dword[edx+GLContext.current_texture],eax
ret
endp
 
115,7 → 115,7
proc glGenTextures uses eax ebx ecx edx esi, n:dword, textures:dword
;edx - GLTexture *t
call gl_get_context
add eax,offs_cont_shared_state+4 ;offset texture_hash_table = 4
add eax,GLContext.shared_state+4 ;offset texture_hash_table = 4
 
xor ebx,ebx ;max=0
xor ecx,ecx ;i=0
167,7 → 167,7
stdcall find_texture,edx,[ecx] ;t=find_texture(context,textures[i])
or eax,eax ;if (t!=0)
jz @f
cmp eax,[edx+offs_cont_current_texture] ;if (t==context.current_texture)
cmp eax,[edx+GLContext.current_texture] ;if (t==context.current_texture)
jne .end_1
stdcall glBindTexture,GL_TEXTURE_2D,0
.end_1:
200,7 → 200,7
jnz @f
stdcall alloc_texture, edx,ebx
@@:
mov [edx+offs_cont_current_texture],eax
mov [edx+GLContext.current_texture],eax
ret
endp
 
265,7 → 265,7
@@:
 
mov ecx,[context]
mov ecx,[ecx+offs_cont_current_texture]
mov ecx,[ecx+GLContext.current_texture]
add ecx,offs_text_images
imul ebx,sizeof.GLTexture
add ecx,ebx ;ecx = &context.current_texture.images[level]
/programs/develop/libraries/TinyGL/asm_fork/vertex.asm
7,7 → 7,7
mov esi,[p]
add esi,4
mov edi,[context]
add edi,offs_cont_current_normal
add edi,GLContext.current_normal
mov ecx,3
rep movsd
mov dword[edi],0.0 ;context.current_normal.W = 0.0
19,7 → 19,7
mov esi,[p]
add esi,4
mov edi,[context]
add edi,offs_cont_current_tex_coord
add edi,GLContext.current_tex_coord
mov ecx,4
rep movsd
ret
30,7 → 30,7
mov eax,[context]
mov ebx,[p]
mov ebx,[ebx+4] ;ebx = p[1]
mov dword[eax+offs_cont_current_edge_flag],ebx
mov dword[eax+GLContext.current_edge_flag],ebx
ret
endp
 
44,17 → 44,17
mov esi,[p]
add esi,4
mov edi,[context]
add edi,offs_cont_current_color
add edi,GLContext.current_color
mov ecx,7
rep movsd
 
mov eax,[context]
cmp dword[eax+offs_cont_color_material_enabled],0
cmp dword[eax+GLContext.color_material_enabled],0
je @f
mov dword[q],OP_Material
mov ecx,[eax+offs_cont_current_color_material_mode]
mov ecx,[eax+GLContext.current_color_material_mode]
mov dword[q+4],ecx
mov ecx,[eax+offs_cont_current_color_material_type]
mov ecx,[eax+GLContext.current_color_material_type]
mov dword[q+8],ecx
mov esi,[p]
add esi,4
75,7 → 75,7
zsize dd ? ;float
endl
mov eax,[context]
add eax,offs_cont_viewport ;eax = (GLViewport*) v
add eax,GLContext.viewport ;eax = (GLViewport*) v
 
mov dword[zsize],(1 shl (ZB_Z_BITS + ZB_POINT_Z_FRAC_BITS))
fild dword[zsize]
125,28 → 125,28
mov edx,[context]
mov ebx,[p]
mov ebx,[ebx+4] ;ebx = p[1]
mov [edx+offs_cont_begin_type],ebx
mov dword[edx+offs_cont_in_begin],1
mov dword[edx+offs_cont_vertex_n],0
mov dword[edx+offs_cont_vertex_cnt],0
mov [edx+GLContext.begin_type],ebx
mov dword[edx+GLContext.in_begin],1
mov dword[edx+GLContext.vertex_n],0
mov dword[edx+GLContext.vertex_cnt],0
 
bt dword[edx+offs_cont_matrix_model_projection_updated],0
bt dword[edx+GLContext.matrix_model_projection_updated],0
jnc .end_mmpu
 
cmp dword[edx+offs_cont_lighting_enabled],0 ;if(context.lighting_enabled)
cmp dword[edx+GLContext.lighting_enabled],0 ;if(context.lighting_enabled)
jne .if_0
cmp dword[eax+offs_cont_texture_2d_enabled],0
cmp dword[eax+GLContext.texture_2d_enabled],0
jne .if_0
jmp @f
align 4
.if_0:
if DEBUG ;context.matrix_stack_ptr[0]
stdcall gl_print_matrix,dword[edx+offs_cont_matrix_stack_ptr],4
stdcall gl_print_matrix,dword[edx+GLContext.matrix_stack_ptr],4
end if
; precompute inverse modelview
mov ebx,ebp
sub ebx,sizeof.M4
stdcall gl_M4_Inv, ebx,dword[edx+offs_cont_matrix_stack_ptr]
stdcall gl_M4_Inv, ebx,dword[edx+GLContext.matrix_stack_ptr]
if DEBUG ;tmp
stdcall dbg_print,txt_sp,txt_nl
stdcall gl_print_matrix,ebx,4
153,7 → 153,7
end if
push ebx
mov ebx,edx
add ebx,offs_cont_matrix_model_view_inv
add ebx,GLContext.matrix_model_view_inv
stdcall gl_M4_Transpose, ebx
if DEBUG ;context.matrix_model_view_inv
stdcall dbg_print,txt_sp,txt_nl
163,12 → 163,12
align 4
@@:
mov ecx,edx
add ecx,offs_cont_matrix_model_projection
add ecx,GLContext.matrix_model_projection
; precompute projection matrix
stdcall gl_M4_Mul, ecx,dword[edx+offs_cont_matrix_stack_ptr+4],dword[edx+offs_cont_matrix_stack_ptr]
stdcall gl_M4_Mul, ecx,dword[edx+GLContext.matrix_stack_ptr+4],dword[edx+GLContext.matrix_stack_ptr]
 
; test to accelerate computation
mov dword[edx+offs_cont_matrix_model_projection_no_w_transform],0
mov dword[edx+GLContext.matrix_model_projection_no_w_transform],0
fldz
fld dword[ecx+12*4]
fcomp st1
185,7 → 185,7
fstsw ax
sahf
jne @f
mov dword[edx+offs_cont_matrix_model_projection_no_w_transform],1
mov dword[edx+GLContext.matrix_model_projection_no_w_transform],1
@@:
ffree st0 ;0.0
fincstp
193,57 → 193,57
 
; test if the texture matrix is not Identity
mov eax,edx
add eax,offs_cont_matrix_stack_ptr+8
add eax,GLContext.matrix_stack_ptr+8
stdcall gl_M4_IsId,eax
xor eax,1
mov dword[edx+offs_cont_apply_texture_matrix],eax
mov dword[edx+GLContext.apply_texture_matrix],eax
 
mov dword[edx+offs_cont_matrix_model_projection_updated],0
mov dword[edx+GLContext.matrix_model_projection_updated],0
.end_mmpu:
 
; viewport
cmp dword[edx+offs_cont_viewport+offs_vpor_updated],0 ;if (context.viewport.updated)
cmp dword[edx+GLContext.viewport+offs_vpor_updated],0 ;if (context.viewport.updated)
je @f
stdcall gl_eval_viewport,edx
mov dword[edx+offs_cont_viewport+offs_vpor_updated],0
mov dword[edx+GLContext.viewport+offs_vpor_updated],0
@@:
; triangle drawing functions
cmp dword[edx+offs_cont_render_mode],GL_SELECT
cmp dword[edx+GLContext.render_mode],GL_SELECT
jne @f
mov dword[edx+offs_cont_draw_triangle_front],gl_draw_triangle_select
mov dword[edx+offs_cont_draw_triangle_back],gl_draw_triangle_select
mov dword[edx+GLContext.draw_triangle_front],gl_draw_triangle_select
mov dword[edx+GLContext.draw_triangle_back],gl_draw_triangle_select
jmp .end_if_2
align 4
@@:
 
cmp dword[edx+offs_cont_polygon_mode_front],GL_POINT
cmp dword[edx+GLContext.polygon_mode_front],GL_POINT
jne @f
mov dword[edx+offs_cont_draw_triangle_front],gl_draw_triangle_point
mov dword[edx+GLContext.draw_triangle_front],gl_draw_triangle_point
jmp .end_if_1
align 4
@@:
cmp dword[edx+offs_cont_polygon_mode_front],GL_LINE
cmp dword[edx+GLContext.polygon_mode_front],GL_LINE
jne @f
mov dword[edx+offs_cont_draw_triangle_front],gl_draw_triangle_line
mov dword[edx+GLContext.draw_triangle_front],gl_draw_triangle_line
jmp .end_if_1
align 4
@@: ;default:
mov dword[edx+offs_cont_draw_triangle_front],gl_draw_triangle_fill
mov dword[edx+GLContext.draw_triangle_front],gl_draw_triangle_fill
.end_if_1:
 
cmp dword[edx+offs_cont_polygon_mode_back],GL_POINT
cmp dword[edx+GLContext.polygon_mode_back],GL_POINT
jne @f
mov dword[edx+offs_cont_draw_triangle_back],gl_draw_triangle_point
mov dword[edx+GLContext.draw_triangle_back],gl_draw_triangle_point
jmp .end_if_2
align 4
@@:
cmp dword[edx+offs_cont_polygon_mode_back],GL_LINE
cmp dword[edx+GLContext.polygon_mode_back],GL_LINE
jne @f
mov dword[edx+offs_cont_draw_triangle_back],gl_draw_triangle_line
mov dword[edx+GLContext.draw_triangle_back],gl_draw_triangle_line
jmp .end_if_2
align 4
@@: ;default:
mov dword[edx+offs_cont_draw_triangle_back],gl_draw_triangle_fill
mov dword[edx+GLContext.draw_triangle_back],gl_draw_triangle_fill
.end_if_2:
ret
endp
255,15 → 255,15
pushad
mov eax,[context]
mov edx,[v]
cmp dword[eax+offs_cont_lighting_enabled],0 ;if (context.lighting_enabled)
cmp dword[eax+GLContext.lighting_enabled],0 ;if (context.lighting_enabled)
jne @f
cmp dword[eax+offs_cont_texture_2d_enabled],0
cmp dword[eax+GLContext.texture_2d_enabled],0
jne @f
jmp .els_0
align 4
@@:
; eye coordinates needed for lighting
mov ebx,dword[eax+offs_cont_matrix_stack_ptr]
mov ebx,dword[eax+GLContext.matrix_stack_ptr]
finit
fld dword[edx+offs_vert_coord+offs_X]
fld dword[edx+offs_vert_coord+offs_Y]
292,7 → 292,7
fincstp
 
; projection coordinates
mov ebx,dword[eax+offs_cont_matrix_stack_ptr+4]
mov ebx,dword[eax+GLContext.matrix_stack_ptr+4]
mov edx,[v]
 
fld dword[edx+offs_vert_ec+offs_X]
327,9 → 327,9
fincstp
 
mov ebx,eax
add ebx,offs_cont_matrix_model_view_inv
add ebx,GLContext.matrix_model_view_inv
mov edi,eax
add edi,offs_cont_current_normal
add edi,GLContext.current_normal
mov edx,[v]
 
fld dword[edi] ;edi = &n
368,7 → 368,7
faddp ;st0 = v.normal.X
fstp dword[edx+8];v.normal.X = n.X * m[8] + n.Y * m[9] + n.Z * m[10]
 
cmp dword[eax+offs_cont_normalize_enabled],0
cmp dword[eax+GLContext.normalize_enabled],0
je .end_els
stdcall gl_V3_Norm,edx
jmp .end_els
377,7 → 377,7
; no eye coordinates needed, no normal
; NOTE: W = 1 is assumed
mov ebx,eax
add ebx,offs_cont_matrix_model_projection
add ebx,GLContext.matrix_model_projection
 
finit
fld dword[edx+offs_vert_coord+offs_X]
420,7 → 420,7
faddp ;st0 = v.pc.Z
fstp dword[esi+8] ;v.pc.Z = v.coord.X * m[8] + v.coord.Y * m[9] + v.coord.Z * m[10] + m[11]
 
cmp dword[eax+offs_cont_matrix_model_projection_no_w_transform],0
cmp dword[eax+GLContext.matrix_model_projection_no_w_transform],0
je .els_1
;if (context.matrix_model_projection_no_w_transform)
mov ebx,dword[ebx+60] ;ebx = m[15]
471,15 → 471,15
 
; assert(c->in_begin != 0);
 
mov ecx,[edx+offs_cont_vertex_n]
mov ecx,[edx+GLContext.vertex_n]
mov [n],ecx
inc dword[edx+offs_cont_vertex_cnt]
inc dword[edx+GLContext.vertex_cnt]
 
; quick fix to avoid crashes on large polygons
mov ecx,[edx+offs_cont_vertex_max]
mov ecx,[edx+GLContext.vertex_max]
cmp dword[n],ecx
jl @f
shl dword[edx+offs_cont_vertex_max],1 ; just double size
shl dword[edx+GLContext.vertex_max],1 ; just double size
imul ecx,2*sizeof.GLVertex
stdcall gl_malloc,ecx
cmp eax,0
488,17 → 488,17
.no_err:
mov edi,eax
mov ebx,eax
mov esi,[edx+offs_cont_vertex]
mov esi,[edx+GLContext.vertex]
mov ecx,[n]
imul ecx,(sizeof.GLVertex)/4 ;((...)/4) что-бы использовать movsd вместо movsb
rep movsd
stdcall gl_free,dword[edx+offs_cont_vertex]
mov dword[edx+offs_cont_vertex],ebx
stdcall gl_free,dword[edx+GLContext.vertex]
mov dword[edx+GLContext.vertex],ebx
@@:
; new vertex entry
mov ebx,[n]
imul ebx,sizeof.GLVertex
add ebx,[edx+offs_cont_vertex]
add ebx,[edx+GLContext.vertex]
inc dword[n]
 
mov esi,[p]
511,7 → 511,7
stdcall gl_vertex_transform, edx, ebx
 
; color
cmp dword[edx+offs_cont_lighting_enabled],0
cmp dword[edx+GLContext.lighting_enabled],0
je .els_0
stdcall gl_shade_vertex, edx,ebx
jmp @f
518,7 → 518,7
align 4
.els_0:
mov esi,edx
add esi,offs_cont_current_color
add esi,GLContext.current_color
mov edi,ebx
add edi,offs_vert_color ;edi = &v.color
mov ecx,4
526,21 → 526,21
@@:
 
; tex coords
cmp dword[edx+offs_cont_texture_2d_enabled],0
cmp dword[edx+GLContext.texture_2d_enabled],0
je @f
cmp dword[edx+offs_cont_apply_texture_matrix],0
cmp dword[edx+GLContext.apply_texture_matrix],0
je .els_1
mov eax,edx
add eax,offs_cont_current_tex_coord
add eax,GLContext.current_tex_coord
push eax ;&context.current_tex_coord
mov eax,ebx
add eax,offs_vert_tex_coord
stdcall gl_M4_MulV4, eax, dword[edx+offs_cont_matrix_stack_ptr+8]
stdcall gl_M4_MulV4, eax, dword[edx+GLContext.matrix_stack_ptr+8]
jmp @f
align 4
.els_1:
mov esi,edx
add esi,offs_cont_current_tex_coord
add esi,GLContext.current_tex_coord
mov edi,ebx
add edi,offs_vert_tex_coord
mov ecx,4
554,21 → 554,21
@@:
 
; edge flag
mov eax,[edx+offs_cont_current_edge_flag]
mov eax,[edx+GLContext.current_edge_flag]
mov dword[ebx+offs_vert_edge_flag],eax ;v.edge_flag = context.current_edge_flag
 
cmp dword[edx+offs_cont_begin_type],GL_POINTS
cmp dword[edx+GLContext.begin_type],GL_POINTS
jne @f
stdcall gl_draw_point, edx, dword[edx+offs_cont_vertex] ;dword[edx+...] = &context.vertex[0]
stdcall gl_draw_point, edx, dword[edx+GLContext.vertex] ;dword[edx+...] = &context.vertex[0]
mov dword[n],0
jmp .end_f
align 4
@@:
cmp dword[edx+offs_cont_begin_type],GL_LINES
cmp dword[edx+GLContext.begin_type],GL_LINES
jne @f
cmp dword[n],2
jne .end_f
mov eax,[edx+offs_cont_vertex]
mov eax,[edx+GLContext.vertex]
push eax
add eax,sizeof.GLVertex
stdcall gl_draw_line, edx, eax
577,14 → 577,14
jmp .end_f
align 4
@@:
cmp dword[edx+offs_cont_begin_type],GL_LINE_STRIP
cmp dword[edx+GLContext.begin_type],GL_LINE_STRIP
je .li_loop
cmp dword[edx+offs_cont_begin_type],GL_LINE_LOOP
cmp dword[edx+GLContext.begin_type],GL_LINE_LOOP
jne @f
.li_loop:
cmp dword[n],1
jne .els_2
mov esi,[edx+offs_cont_vertex]
mov esi,[edx+GLContext.vertex]
mov edi,esi
add edi,2*sizeof.GLVertex
mov ecx,(sizeof.GLVertex)/4 ;((...)/4) что-бы использовать movsd вместо movsb
594,7 → 594,7
.els_2:
cmp dword[n],2
jne .end_f ;else if (n == 2)
mov eax,[edx+offs_cont_vertex]
mov eax,[edx+GLContext.vertex]
push eax
mov edi,eax
add eax,sizeof.GLVertex
606,11 → 606,11
jmp .end_f
align 4
@@:
cmp dword[edx+offs_cont_begin_type],GL_TRIANGLES
cmp dword[edx+GLContext.begin_type],GL_TRIANGLES
jne @f
cmp dword[n],3
jne .end_f
mov eax,[edx+offs_cont_vertex]
mov eax,[edx+GLContext.vertex]
mov [esp-12],eax
add eax,sizeof.GLVertex
mov [esp-8],eax
623,9 → 623,9
jmp .end_f
align 4
@@:
cmp dword[edx+offs_cont_begin_type],GL_TRIANGLE_STRIP
cmp dword[edx+GLContext.begin_type],GL_TRIANGLE_STRIP
jne @f
cmp dword[edx+offs_cont_vertex_cnt],3 ;if (context.vertex_cnt >= 3)
cmp dword[edx+GLContext.vertex_cnt],3 ;if (context.vertex_cnt >= 3)
jl .end_f
cmp dword[n],3
jne .ts3
633,8 → 633,8
mov dword[n],eax
.ts3:
; needed to respect triangle orientation
mov eax,[edx+offs_cont_vertex]
bt dword[edx+offs_cont_vertex_cnt],0
mov eax,[edx+GLContext.vertex]
bt dword[edx+GLContext.vertex_cnt],0
jc .case_1
mov [esp-4],eax
add eax,sizeof.GLVertex
656,11 → 656,11
jmp .end_f
align 4
@@:
cmp dword[edx+offs_cont_begin_type],GL_TRIANGLE_FAN
cmp dword[edx+GLContext.begin_type],GL_TRIANGLE_FAN
jne @f
cmp dword[n],3
jne .end_f
mov eax,[edx+offs_cont_vertex]
mov eax,[edx+GLContext.vertex]
mov [esp-12],eax
add eax,sizeof.GLVertex
mov [esp-8],eax
676,11 → 676,11
jmp .end_f
align 4
@@:
cmp dword[edx+offs_cont_begin_type],GL_QUADS
cmp dword[edx+GLContext.begin_type],GL_QUADS
jne @f
cmp dword[n],4
jne .end_f
mov eax,[edx+offs_cont_vertex]
mov eax,[edx+GLContext.vertex]
add eax,2*sizeof.GLVertex
mov dword[eax+offs_vert_edge_flag],0 ;context.vertex[2].edge_flag = 0
push eax
702,11 → 702,11
jmp .end_f
align 4
@@:
cmp dword[edx+offs_cont_begin_type],GL_QUAD_STRIP
cmp dword[edx+GLContext.begin_type],GL_QUAD_STRIP
jne @f
cmp dword[n],4
jne .end_f
mov eax,[edx+offs_cont_vertex]
mov eax,[edx+GLContext.vertex]
mov [esp-12],eax
mov edi,eax
add eax,sizeof.GLVertex
729,7 → 729,7
jmp .end_f
align 4
@@:
cmp dword[edx+offs_cont_begin_type],GL_POLYGON
cmp dword[edx+GLContext.begin_type],GL_POLYGON
je .end_f
; default:
; gl_fatal_error("glBegin: type %x not handled\n", c->begin_type);
737,7 → 737,7
.end_f:
 
mov ecx,[n]
mov [edx+offs_cont_vertex_n],ecx
mov [edx+GLContext.vertex_n],ecx
popad
ret
endp
747,11 → 747,11
mov eax,[context]
; assert(c->in_begin == 1);
 
cmp dword[eax+offs_cont_begin_type],GL_LINE_LOOP
cmp dword[eax+GLContext.begin_type],GL_LINE_LOOP
jne .else_i
cmp dword[eax+offs_cont_vertex_cnt],3
cmp dword[eax+GLContext.vertex_cnt],3
jl .end_i
mov ebx,[eax+offs_cont_vertex]
mov ebx,[eax+GLContext.vertex]
push ebx
add ebx,2*sizeof.GLVertex
push ebx
759,9 → 759,9
jmp .end_i
align 4
.else_i:
cmp dword[eax+offs_cont_begin_type],GL_POLYGON
cmp dword[eax+GLContext.begin_type],GL_POLYGON
jne .end_i
mov ebx,dword[eax+offs_cont_vertex_cnt]
mov ebx,dword[eax+GLContext.vertex_cnt]
@@: ;while (ebx >= 3)
cmp ebx,3
jl .end_i
768,14 → 768,14
dec ebx
mov ecx,ebx
imul ecx,sizeof.GLVertex
add ecx,[eax+offs_cont_vertex]
add ecx,[eax+GLContext.vertex]
push ecx ;ecx = &context.vertex[i]
sub ecx,sizeof.GLVertex
push ecx ;ecx = &context.vertex[i-1]
stdcall gl_draw_triangle, eax,[eax+offs_cont_vertex]
stdcall gl_draw_triangle, eax,[eax+GLContext.vertex]
jmp @b
align 4
.end_i:
mov dword[eax+offs_cont_in_begin],0
mov dword[eax+GLContext.in_begin],0
ret
endp
/programs/develop/libraries/TinyGL/asm_fork/zgl.inc
333,93 → 333,6
depth_test dd ? ;int
ends
 
offs_cont_s0 equ (4 + sizeof.GLLight * MAX_LIGHTS)
offs_cont_s1 equ (32 + offs_cont_s0 + sizeof.GLMaterial * 2)
offs_cont_s2 equ (228 + offs_cont_s1 + sizeof.GLViewport)
offs_cont_s3 equ (64 + offs_cont_s2 + MAX_NAME_STACK_DEPTH * 4)
 
offs_cont_zb equ 0 ;ZBuffer*
offs_cont_lights equ 4 ;GLLight[MAX_LIGHTS]
offs_cont_first_light equ offs_cont_s0 ;GLLight*
offs_cont_ambient_light_model equ 4+offs_cont_s0 ;V4
offs_cont_local_light_model equ 20+offs_cont_s0 ;int
offs_cont_lighting_enabled equ 24+offs_cont_s0 ;int
offs_cont_light_model_two_side equ 28+offs_cont_s0 ;int
offs_cont_materials equ 32+offs_cont_s0 ;GLMaterial[2]
offs_cont_color_material_enabled equ offs_cont_s1 ;int
offs_cont_current_color_material_mode equ 4+offs_cont_s1 ;int
offs_cont_current_color_material_type equ 8+offs_cont_s1 ;int
offs_cont_current_texture equ 12+offs_cont_s1 ;GLTexture*
offs_cont_texture_2d_enabled equ 16+offs_cont_s1 ;int
offs_cont_shared_state equ 20+offs_cont_s1 ;GLSharedState
offs_cont_current_op_buffer equ 28+offs_cont_s1 ;GLParamBuffer*
offs_cont_current_op_buffer_index equ 32+offs_cont_s1 ;int
offs_cont_exec_flag equ 36+offs_cont_s1 ;int
offs_cont_compile_flag equ 40+offs_cont_s1 ;int
offs_cont_print_flag equ 44+offs_cont_s1 ;int
offs_cont_matrix_mode equ 48+offs_cont_s1 ;int
offs_cont_matrix_stack equ 52+offs_cont_s1 ;*M4[3]
offs_cont_matrix_stack_ptr equ 64+offs_cont_s1 ;*M4[3]
offs_cont_matrix_stack_depth_max equ 76+offs_cont_s1 ;int[3]
offs_cont_matrix_model_view_inv equ 88+offs_cont_s1 ;M4
offs_cont_matrix_model_projection equ 152+offs_cont_s1 ;M4
offs_cont_matrix_model_projection_updated equ 216+offs_cont_s1 ;int
offs_cont_matrix_model_projection_no_w_transform equ 220+offs_cont_s1 ;int
offs_cont_apply_texture_matrix equ 224+offs_cont_s1 ;int
offs_cont_viewport equ 228+offs_cont_s1 ;GLViewport
offs_cont_polygon_mode_back equ offs_cont_s2 ;int
offs_cont_polygon_mode_front equ 4+offs_cont_s2 ;int
offs_cont_current_front_face equ 8+offs_cont_s2 ;int
offs_cont_current_shade_model equ 12+offs_cont_s2 ;int
offs_cont_current_cull_face equ 16+offs_cont_s2 ;int
offs_cont_cull_face_enabled equ 20+offs_cont_s2 ;int
offs_cont_normalize_enabled equ 24+offs_cont_s2 ;int
offs_cont_draw_triangle_front equ 28+offs_cont_s2 ;gl_draw_triangle_func
offs_cont_draw_triangle_back equ 32+offs_cont_s2 ;gl_draw_triangle_func
offs_cont_render_mode equ 36+offs_cont_s2 ;int
offs_cont_select_buffer equ 40+offs_cont_s2 ;unsigned int*
offs_cont_select_size equ 44+offs_cont_s2 ;int
offs_cont_select_ptr equ 48+offs_cont_s2 ;unsigned int*
offs_cont_select_hit equ 52+offs_cont_s2 ;unsigned int*
offs_cont_select_overflow equ 56+offs_cont_s2 ;int
offs_cont_select_hits equ 60+offs_cont_s2 ;int
offs_cont_name_stack equ 64+offs_cont_s2 ;unsigned int[MAX_NAME_STACK_DEPTH]
offs_cont_name_stack_size equ offs_cont_s3 ;int
offs_cont_clear_depth equ 4+offs_cont_s3 ;float
offs_cont_clear_color equ 8+offs_cont_s3 ;V4
offs_cont_current_color equ 24+offs_cont_s3 ;V4
offs_cont_longcurrent_color equ 40+offs_cont_s3 ;unsigned int[3]
offs_cont_current_normal equ 52+offs_cont_s3 ;V4
offs_cont_current_tex_coord equ 68+offs_cont_s3 ;V4
offs_cont_current_edge_flag equ 84+offs_cont_s3 ;int
offs_cont_in_begin equ 88+offs_cont_s3 ;int
offs_cont_begin_type equ 92+offs_cont_s3 ;int
offs_cont_vertex_n equ 96+offs_cont_s3 ;int
offs_cont_vertex_cnt equ 100+offs_cont_s3 ;int
offs_cont_vertex_max equ 104+offs_cont_s3 ;int
offs_cont_vertex equ 108+offs_cont_s3 ;GLVertex*
offs_cont_vertex_array equ 112+offs_cont_s3 ;float*
offs_cont_vertex_array_size equ 116+offs_cont_s3 ;int
offs_cont_vertex_array_stride equ 120+offs_cont_s3 ;int
offs_cont_normal_array equ 124+offs_cont_s3 ;float*
offs_cont_normal_array_stride equ 128+offs_cont_s3 ;int
offs_cont_color_array equ 132+offs_cont_s3 ;float*
offs_cont_color_array_size equ 136+offs_cont_s3 ;int
offs_cont_color_array_stride equ 140+offs_cont_s3 ;int
offs_cont_texcoord_array equ 144+offs_cont_s3 ;float*
offs_cont_texcoord_array_size equ 148+offs_cont_s3 ;int
offs_cont_texcoord_array_stride equ 152+offs_cont_s3 ;int
offs_cont_client_states equ 156+offs_cont_s3 ;int
offs_cont_offset_factor equ 160+offs_cont_s3 ;float
offs_cont_offset_units equ 164+offs_cont_s3 ;float
offs_cont_offset_states equ 168+offs_cont_s3 ;int
offs_cont_specbuf_first equ 172+offs_cont_s3 ;GLSpecBuf*
offs_cont_specbuf_used_counter equ 176+offs_cont_s3 ;int
offs_cont_specbuf_num_buffers equ 180+offs_cont_s3 ;int
offs_cont_opaque equ 184+offs_cont_s3 ;void*
offs_cont_gl_resize_viewport equ 188+offs_cont_s3 ;(struct GLContext *c,int *xsize,int *ysize)
offs_cont_depth_test equ 192+offs_cont_s3 ;int
 
align 16
gl_ctx dd ? ;extern GLContext*