forked from KolibriOS/kolibrios
code cleanup
git-svn-id: svn://kolibrios.org@6523 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
5ac41a2dfc
commit
63939f9591
@ -1021,6 +1021,6 @@ align 4
|
||||
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
|
||||
|
@ -16,13 +16,13 @@ endl
|
||||
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 @@ endl
|
||||
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,41 +41,41 @@ endl
|
||||
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
|
||||
.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 @@ endl
|
||||
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 @@ endl
|
||||
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 @@ endl
|
||||
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 @@ pushad
|
||||
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 @@ align 4
|
||||
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 @@ align 4
|
||||
@@:
|
||||
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 @@ align 4
|
||||
@@:
|
||||
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 @@ align 4
|
||||
@@:
|
||||
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 @@ endl
|
||||
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 @@ align 4
|
||||
|
||||
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 @@ align 4
|
||||
@@:
|
||||
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 @@ align 4
|
||||
@@:
|
||||
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 @@ align 4
|
||||
@@:
|
||||
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 @@ proc glopEnableClientState uses eax ebx, context:dword, p:dword
|
||||
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 @@ proc glopDisableClientState uses eax ebx, context:dword, p:dword
|
||||
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 @@ proc glopVertexPointer uses eax ebx ecx, context:dword, p:dword
|
||||
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 @@ proc glopColorPointer uses eax ebx ecx, context:dword, p:dword
|
||||
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 @@ proc glopNormalPointer uses eax ebx ecx, context:dword, p:dword
|
||||
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 @@ proc glopTexCoordPointer uses eax ebx ecx, context:dword, p:dword
|
||||
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
|
||||
|
||||
|
@ -4,7 +4,7 @@ proc glopClearColor uses ecx esi edi, context:dword, p:dword
|
||||
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 @@ proc glopClearDepth uses eax ebx, context:dword, p:dword
|
||||
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 @@ fl_65535 dd 65535.0
|
||||
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 @@ proc glopClear uses eax ebx, context:dword, p:dword
|
||||
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
|
||||
|
||||
|
@ -19,24 +19,24 @@ proc gl_transform_to_viewport uses eax ebx ecx, context:dword,v:dword
|
||||
|
||||
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 @@ proc gl_transform_to_viewport uses eax ebx ecx, context:dword,v:dword
|
||||
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,14 +116,14 @@ proc gl_draw_point uses eax ebx, context:dword, p0:dword
|
||||
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
|
||||
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 @@ pushad
|
||||
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 @@ align 4
|
||||
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 @@ align 4
|
||||
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 @@ align 16
|
||||
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 @@ align 4
|
||||
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,37 +709,37 @@ pushad
|
||||
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:
|
||||
; 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,24 +1035,24 @@ end if
|
||||
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
|
||||
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 @@ align 4
|
||||
.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 @@ endp
|
||||
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 @@ align 4
|
||||
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 @@ align 4
|
||||
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 @@ align 4
|
||||
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,21 +1134,21 @@ proc gl_draw_triangle_point uses eax ebx edx, context:dword, p0:dword,p1:dword,p
|
||||
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
|
||||
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
|
||||
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
|
||||
|
@ -4,9 +4,9 @@ proc initSharedState uses eax ebx, context:dword
|
||||
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 @@ proc endSharedState uses eax ebx, context:dword
|
||||
; 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 @@ proc glInit uses eax ebx ecx edx, zbuffer1:dword
|
||||
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 @@ proc glInit uses eax ebx ecx edx, zbuffer1:dword
|
||||
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 @@ proc glInit uses eax ebx ecx edx, zbuffer1:dword
|
||||
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 @@ proc glInit uses eax ebx ecx edx, zbuffer1:dword
|
||||
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
|
||||
|
@ -67,14 +67,14 @@ proc gl_resize_viewport uses ebx ecx edx edi esi, context:dword, xsize_ptr:dword
|
||||
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
|
||||
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 @@ proc kosglMakeCurrent uses ebx ecx, win_x0:dword, win_y0:dword, win_x:dword, win
|
||||
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 @@ align 4
|
||||
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
|
||||
|
@ -17,7 +17,7 @@ proc glopMaterial uses eax ebx ecx edi esi, context:dword, p:dword
|
||||
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 @@ proc glopColorMaterial uses eax ebx ecx, context:dword, p:dword
|
||||
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 @@ pushad
|
||||
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 @@ align 4
|
||||
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 @@ proc glopLightModel uses ebx ecx esi edi, context:dword, p:dword
|
||||
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,14 +275,14 @@ align 4
|
||||
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
|
||||
@@:
|
||||
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 @@ proc gl_enable_disable_light uses eax ebx ecx, context:dword, light:dword, v:dwo
|
||||
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 @@ proc gl_enable_disable_light uses eax ebx ecx, context:dword, light:dword, v:dwo
|
||||
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 @@ align 4
|
||||
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 @@ pushad
|
||||
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,22 +428,22 @@ pushad
|
||||
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]
|
||||
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 @@ align 4
|
||||
.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
|
||||
|
@ -28,7 +28,7 @@ include 'opinfo.inc'
|
||||
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 @@ proc delete_list uses eax ebx ecx edx, context:dword, list:dword
|
||||
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 @@ proc alloc_list uses ebx ecx, context:dword, list:dword
|
||||
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 @@ pushad
|
||||
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 @@ pushad
|
||||
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 @@ pushad
|
||||
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 @@ end if
|
||||
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 @@ end if
|
||||
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 @@ proc glNewList uses eax ebx, list:dword, mode:dword
|
||||
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 @@ endl
|
||||
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 @@ proc glGenLists uses ebx ecx edx edi esi, range:dword
|
||||
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
|
||||
|
@ -60,11 +60,11 @@ macro gl_matrix_update context, reg
|
||||
{
|
||||
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 @@ proc glopMatrixMode uses eax ebx, context:dword, p:dword
|
||||
|
||||
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 @@ endp
|
||||
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 @@ endp
|
||||
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 @@ endl
|
||||
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,14 +144,14 @@ endp
|
||||
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] );
|
||||
|
||||
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 @@ endp
|
||||
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 @@ endl
|
||||
.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 @@ proc glopScale uses eax ebx ecx, context:dword, p:dword
|
||||
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 @@ proc glopTranslate uses eax ebx ecx, context:dword, p:dword
|
||||
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 @@ endl
|
||||
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
|
||||
|
@ -23,16 +23,16 @@ endl
|
||||
|
||||
; 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,14 +44,14 @@ endl
|
||||
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
|
||||
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 @@ endl
|
||||
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,62 +92,62 @@ proc glopEnableDisable uses eax ebx ecx, context:dword, p:dword
|
||||
|
||||
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
|
||||
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
|
||||
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
|
||||
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 @@ proc glopEnableDisable uses eax ebx ecx, context:dword, p:dword
|
||||
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 @@ proc glopShadeModel uses eax ebx, context:dword,p:dword
|
||||
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 @@ proc glopCullFace uses eax ebx, context:dword,p:dword
|
||||
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 @@ proc glopFrontFace uses eax ebx, context:dword,p:dword
|
||||
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 @@ proc glopPolygonMode uses eax ebx, context:dword,p:dword
|
||||
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 @@ proc glopPolygonOffset uses eax ebx ecx, context:dword,p:dword
|
||||
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
|
@ -4,39 +4,39 @@ proc glRenderMode uses ebx ecx, mode:dword
|
||||
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);
|
||||
.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,19 +52,19 @@ proc glSelectBuffer uses eax ebx, size:dword, buf:dword
|
||||
; 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
|
||||
|
||||
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 @@ endp
|
||||
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 @@ endp
|
||||
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 @@ endp
|
||||
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 @@ proc gl_add_select uses eax ebx ecx edx, context:dword, zmin:dword, zmax:dword
|
||||
; 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 @@ proc gl_add_select uses eax ebx ecx edx, context:dword, zmin:dword, zmax:dword
|
||||
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
|
||||
|
@ -63,7 +63,7 @@ locals
|
||||
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 @@ endl
|
||||
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 @@ endl
|
||||
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 @@ endl
|
||||
;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
|
||||
|
@ -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 @@ proc free_texture uses eax ebx ecx edx, context:dword, h:dword
|
||||
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 @@ proc alloc_texture uses ebx ecx, context:dword, h:dword
|
||||
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 @@ align 4
|
||||
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 @@ align 4
|
||||
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 @@ proc glDeleteTextures uses eax ebx ecx edx, n:dword, textures:dword
|
||||
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 @@ proc glopBindTexture uses eax ebx edx, context:dword, p:dword
|
||||
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 @@ align 4
|
||||
@@:
|
||||
|
||||
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]
|
||||
|
@ -7,7 +7,7 @@ proc glopNormal uses ecx esi edi, context:dword, p:dword
|
||||
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 @@ proc glopTexCoord uses ecx esi edi, context:dword, p:dword
|
||||
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 @@ proc glopEdgeFlag uses eax ebx, context:dword, p:dword
|
||||
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 @@ endl
|
||||
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 @@ locals
|
||||
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,35 +125,35 @@ endl
|
||||
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
|
||||
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 @@ end if
|
||||
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 @@ align 4
|
||||
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 @@ align 4
|
||||
|
||||
; 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 @@ proc gl_vertex_transform, context:dword, v:dword
|
||||
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 @@ align 4
|
||||
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 @@ align 4
|
||||
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 @@ align 4
|
||||
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 @@ align 4
|
||||
; 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 @@ align 4
|
||||
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 @@ pushad
|
||||
|
||||
; 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 @@ pushad
|
||||
.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,14 +511,14 @@ pushad
|
||||
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
|
||||
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 @@ align 4
|
||||
@@:
|
||||
|
||||
; 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 @@ align 4
|
||||
@@:
|
||||
|
||||
; 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 @@ align 4
|
||||
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 @@ align 4
|
||||
.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 @@ align 4
|
||||
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 @@ align 4
|
||||
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 @@ align 4
|
||||
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 @@ align 4
|
||||
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 @@ align 4
|
||||
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 @@ align 4
|
||||
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 @@ align 4
|
||||
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 @@ align 4
|
||||
.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 @@ proc glopEnd uses eax ebx ecx, context:dword, p:dword
|
||||
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,23 +759,23 @@ proc glopEnd uses eax ebx ecx, context:dword, p:dword
|
||||
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
|
||||
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
|
||||
|
@ -333,93 +333,6 @@ struct GLContext
|
||||
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*
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user