forked from KolibriOS/kolibrios
add function 'glColor3ub' & some fixes
git-svn-id: svn://kolibrios.org@5387 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
2e7798d1dc
commit
23f3365f2a
@ -158,6 +158,37 @@ proc glColor3fv uses eax, v:dword
|
||||
ret
|
||||
endp
|
||||
|
||||
align 4
|
||||
fl_255 dd 255.0
|
||||
|
||||
align 4
|
||||
proc glColor3ub uses eax, r:dword, g:dword, b:dword
|
||||
push dword 1.0
|
||||
fld dword[fl_255]
|
||||
|
||||
movzx eax,byte[b]
|
||||
mov dword[esp-4],eax
|
||||
fild dword[esp-4]
|
||||
fdiv st0,st1
|
||||
fstp dword[esp-4] ;преобразовали int во float
|
||||
movzx eax,byte[g]
|
||||
mov dword[esp-8],eax
|
||||
fild dword[esp-8]
|
||||
fdiv st0,st1
|
||||
fstp dword[esp-8]
|
||||
movzx eax,byte[r]
|
||||
mov dword[esp-12],eax
|
||||
fild dword[esp-12]
|
||||
fdiv st0,st1
|
||||
fstp dword[esp-12]
|
||||
|
||||
ffree st0
|
||||
fincstp
|
||||
sub esp,12
|
||||
call glColor4f
|
||||
ret
|
||||
endp
|
||||
|
||||
; TexCoord
|
||||
|
||||
align 4
|
||||
|
@ -29,6 +29,7 @@ E_LIB glColor3f ;(float ,float ,float)
|
||||
E_LIB glColor3d ;(double ,double ,double)
|
||||
E_LIB glColor3fv ;(float *)
|
||||
E_LIB glColor3dv ;(double *)
|
||||
E_LIB glColor3ub
|
||||
E_LIB glColor4f ;(float ,float ,float, float )
|
||||
E_LIB glColor4d ;(double ,double ,double, double )
|
||||
E_LIB glColor4fv ;(float *)
|
||||
|
@ -608,10 +608,11 @@ end if
|
||||
fstp st ;Результат остается на вершине стека st0
|
||||
fmul dword[att]
|
||||
fstp dword[att] ;att=att*pow(dot_spot,l.spot_exponent)
|
||||
jmp .if1_end
|
||||
jmp .if1_end_f1
|
||||
@@:
|
||||
ffree st0 ;l.spot_exponent
|
||||
fincstp
|
||||
.if1_end_f1:
|
||||
ffree st0 ;dot_spot
|
||||
fincstp
|
||||
.if1_end:
|
||||
@ -648,13 +649,13 @@ end if
|
||||
fstp dword[s+offs_Z] ;s.Z=d.Z+1.0
|
||||
.els_2_end:
|
||||
fld dword[n]
|
||||
fmul st0,st0
|
||||
fmul dword[s]
|
||||
fld dword[n+offs_Y]
|
||||
fmul st0,st0
|
||||
fmul dword[s+offs_Y]
|
||||
faddp
|
||||
fld dword[n+offs_Z]
|
||||
fmul st0,st0
|
||||
faddp ;dot_spec = n.X^2 +n.Y^2 +n.Z^2
|
||||
fmul dword[s+offs_Z]
|
||||
faddp ;dot_spec = n.X*s.X +n.Y*s.Y +n.Z*s.Z
|
||||
cmp dword[twoside],0 ;if (twoside && dot_spec < 0)
|
||||
je @f
|
||||
ftst ;if (dot_spec < 0)
|
||||
@ -710,25 +711,16 @@ end if
|
||||
fmul dword[ecx+offs_mate_specular]
|
||||
fadd dword[lR]
|
||||
fstp dword[lR] ;lR+=dot_spec * l.specular.v[0] * m.specular.v[0]
|
||||
;ffree st0
|
||||
;fincstp
|
||||
fld dword[ebx+offs_ligh_specular+4]
|
||||
fmul st0,st1
|
||||
fmul dword[ecx+offs_mate_specular+4]
|
||||
fadd dword[lG]
|
||||
fstp dword[lG] ;lG+=dot_spec * l.specular.v[1] * m.specular.v[1]
|
||||
;ffree st0
|
||||
;fincstp
|
||||
fld dword[ebx+offs_ligh_specular+8]
|
||||
fmul st0,st1
|
||||
fmul dword[ecx+offs_mate_specular+8]
|
||||
fadd dword[lB]
|
||||
fstp dword[lB] ;lB+=dot_spec * l.specular.v[2] * m.specular.v[2]
|
||||
;ffree st0
|
||||
;fincstp
|
||||
ffree st0 ;dot_spec
|
||||
fincstp
|
||||
jmp .if2_end
|
||||
.if0_end:
|
||||
ffree st0 ;dot [or] dot_spec
|
||||
fincstp
|
||||
|
Loading…
Reference in New Issue
Block a user