forked from KolibriOS/kolibrios
optimize, clean code
git-svn-id: svn://kolibrios.org@8063 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -1,25 +1,14 @@
|
||||
; glVertex
|
||||
|
||||
align 4
|
||||
proc glVertex4f uses eax, x:dword, y:dword, z:dword, w:dword
|
||||
locals
|
||||
p rd 5
|
||||
endl
|
||||
mov dword[p],OP_Vertex
|
||||
mov eax,[x]
|
||||
mov dword[p+4],eax
|
||||
mov eax,[y]
|
||||
mov dword[p+8],eax
|
||||
mov eax,[z]
|
||||
mov dword[p+12],eax
|
||||
mov eax,[w]
|
||||
mov dword[p+16],eax
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,20 ;=sizeof(dd)*5
|
||||
glVertex4f: ;x, y, z, w
|
||||
push dword[esp] ;копируем адрес возврата
|
||||
push eax
|
||||
lea eax,[esp+8]
|
||||
mov dword[eax],OP_Vertex
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
pop eax
|
||||
ret 20 ;=sizeof(dd)*5
|
||||
|
||||
align 4
|
||||
proc glVertex2f, x:dword, y:dword
|
||||
@@ -57,23 +46,14 @@ endp
|
||||
; glNormal
|
||||
|
||||
align 4
|
||||
proc glNormal3f uses eax, x:dword, y:dword, z:dword
|
||||
locals
|
||||
p rd 4
|
||||
endl
|
||||
mov dword[p],OP_Normal
|
||||
mov eax,[x]
|
||||
mov dword[p+4],eax
|
||||
mov eax,[y]
|
||||
mov dword[p+8],eax
|
||||
mov eax,[z]
|
||||
mov dword[p+12],eax
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,16 ;=sizeof(dd)*4
|
||||
glNormal3f: ;x, y, z
|
||||
push dword[esp] ;копируем адрес возврата
|
||||
push eax
|
||||
lea eax,[esp+8]
|
||||
mov dword[eax],OP_Normal
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
pop eax
|
||||
ret 16 ;=sizeof(dd)*4
|
||||
|
||||
align 4
|
||||
proc glNormal3fv uses eax, v:dword
|
||||
@@ -99,8 +79,7 @@ endl
|
||||
mov eax,[a]
|
||||
mov dword[p+16],eax
|
||||
; direct convertion to integer to go faster if no shading
|
||||
mov eax,ebp
|
||||
sub eax,12 ;ebp-12 = &p[5]
|
||||
lea eax,[ebp-12] ;ebp-12 = &p[5]
|
||||
push eax
|
||||
add eax,4 ;ebp-8 = &p[6]
|
||||
push eax
|
||||
@@ -108,8 +87,7 @@ endl
|
||||
push eax
|
||||
stdcall RGBFtoRGBI,[r],[g],[b] ;call: r,g,b,&p[7],&p[6],&p[5]
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,32 ;=sizeof(dd)*8
|
||||
lea eax,[ebp-32] ;=sizeof(dd)*8
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
@@ -168,25 +146,14 @@ endp
|
||||
; TexCoord
|
||||
|
||||
align 4
|
||||
proc glTexCoord4f uses eax, s:dword, t:dword, r:dword, q:dword
|
||||
locals
|
||||
p rd 5
|
||||
endl
|
||||
mov dword[p],OP_TexCoord
|
||||
mov eax,[s]
|
||||
mov dword[p+4],eax
|
||||
mov eax,[t]
|
||||
mov dword[p+8],eax
|
||||
mov eax,[r]
|
||||
mov dword[p+12],eax
|
||||
mov eax,[q]
|
||||
mov dword[p+16],eax
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,20 ;=sizeof(dd)*5
|
||||
glTexCoord4f: ;s, t, r, q
|
||||
push dword[esp] ;копируем адрес возврата
|
||||
push eax
|
||||
lea eax,[esp+8]
|
||||
mov dword[eax],OP_TexCoord
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
pop eax
|
||||
ret 20 ;=sizeof(dd)*5
|
||||
|
||||
align 4
|
||||
proc glTexCoord2f, s:dword, t:dword
|
||||
@@ -202,59 +169,40 @@ proc glTexCoord2fv uses eax, v:dword
|
||||
endp
|
||||
|
||||
align 4
|
||||
proc glEdgeFlag uses eax, flag:dword
|
||||
locals
|
||||
p rd 2
|
||||
endl
|
||||
mov dword[p],OP_EdgeFlag
|
||||
mov eax,[flag]
|
||||
mov dword[p+4],eax
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,8 ;=sizeof(dd)*2
|
||||
glEdgeFlag: ;flag
|
||||
push dword[esp] ;копируем адрес возврата
|
||||
push eax
|
||||
lea eax,[esp+8]
|
||||
mov dword[eax],OP_EdgeFlag
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
pop eax
|
||||
ret 8 ;=sizeof(dd)*2
|
||||
|
||||
; misc
|
||||
|
||||
align 4
|
||||
proc glShadeModel uses eax, mode:dword
|
||||
locals
|
||||
p rd 2
|
||||
endl
|
||||
|
||||
glShadeModel: ;mode
|
||||
; assert(mode == GL_FLAT || mode == GL_SMOOTH);
|
||||
|
||||
mov dword[p],OP_ShadeModel
|
||||
mov eax,[mode]
|
||||
mov dword[p+4],eax
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,8 ;=sizeof(dd)*2
|
||||
push dword[esp] ;копируем адрес возврата
|
||||
push eax
|
||||
lea eax,[esp+8]
|
||||
mov dword[eax],OP_ShadeModel
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
pop eax
|
||||
ret 8 ;=sizeof(dd)*2
|
||||
|
||||
align 4
|
||||
proc glCullFace uses eax, mode:dword
|
||||
locals
|
||||
p rd 2
|
||||
endl
|
||||
|
||||
glCullFace: ;mode
|
||||
; assert(mode == GL_BACK ||
|
||||
; mode == GL_FRONT ||
|
||||
; mode == GL_FRONT_AND_BACK);
|
||||
|
||||
mov dword[p],OP_CullFace
|
||||
mov eax,[mode]
|
||||
mov dword[p+4],eax
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,8 ;=sizeof(dd)*2
|
||||
push dword[esp] ;копируем адрес возврата
|
||||
push eax
|
||||
lea eax,[esp+8]
|
||||
mov dword[eax],OP_CullFace
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
pop eax
|
||||
ret 8 ;=sizeof(dd)*2
|
||||
|
||||
align 4
|
||||
proc glFrontFace uses eax, mode:dword
|
||||
@@ -272,34 +220,24 @@ endl
|
||||
@@:
|
||||
mov dword[p+4],eax
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,8 ;=sizeof(dd)*2
|
||||
lea eax,[ebp-8] ;=sizeof(dd)*2
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
|
||||
align 4
|
||||
proc glPolygonMode uses eax, face:dword, mode:dword
|
||||
locals
|
||||
p rd 3
|
||||
endl
|
||||
|
||||
glPolygonMode: ;face, mode
|
||||
; assert(face == GL_BACK ||
|
||||
; face == GL_FRONT ||
|
||||
; face == GL_FRONT_AND_BACK);
|
||||
; assert(mode == GL_POINT || mode == GL_LINE || mode==GL_FILL);
|
||||
|
||||
mov dword[p],OP_PolygonMode
|
||||
mov eax,[face]
|
||||
mov dword[p+4],eax
|
||||
mov eax,[mode]
|
||||
mov dword[p+8],eax
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,12 ;=sizeof(dd)*3
|
||||
push dword[esp] ;копируем адрес возврата
|
||||
push eax
|
||||
lea eax,[esp+8]
|
||||
mov dword[eax],OP_PolygonMode
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
pop eax
|
||||
ret 12 ;=sizeof(dd)*3
|
||||
|
||||
; glEnable / glDisable
|
||||
|
||||
@@ -313,8 +251,7 @@ endl
|
||||
mov dword[p+4],eax
|
||||
mov dword[p+8],1
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,12 ;=sizeof(dd)*3
|
||||
lea eax,[ebp-12] ;=sizeof(dd)*3
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
@@ -329,8 +266,7 @@ endl
|
||||
mov dword[p+4],eax
|
||||
mov dword[p+8],0
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,12 ;=sizeof(dd)*3
|
||||
lea eax,[ebp-12] ;=sizeof(dd)*3
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
@@ -338,49 +274,31 @@ endp
|
||||
; glBegin / glEnd
|
||||
|
||||
align 4
|
||||
proc glBegin uses eax, mode:dword
|
||||
locals
|
||||
p rd 2
|
||||
endl
|
||||
mov dword[p],OP_Begin
|
||||
mov eax,[mode]
|
||||
mov dword[p+4],eax
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,8 ;=sizeof(dd)*2
|
||||
glBegin: ;mode
|
||||
push dword[esp] ;копируем адрес возврата
|
||||
push eax
|
||||
lea eax,[esp+8]
|
||||
mov dword[eax],OP_Begin
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
pop eax
|
||||
ret 8 ;=sizeof(dd)*2
|
||||
|
||||
align 4
|
||||
proc glEnd uses eax
|
||||
locals
|
||||
p dd ?
|
||||
endl
|
||||
mov dword[p],OP_End
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,4 ;=sizeof(dd)*1
|
||||
stdcall gl_add_op,eax
|
||||
glEnd:
|
||||
stdcall gl_add_op,op_End
|
||||
ret
|
||||
endp
|
||||
|
||||
; matrix
|
||||
|
||||
align 4
|
||||
proc glMatrixMode uses eax, mode:dword
|
||||
locals
|
||||
p rd 2
|
||||
endl
|
||||
mov dword[p],OP_MatrixMode
|
||||
mov eax,[mode]
|
||||
mov dword[p+4],eax
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,8 ;=sizeof(dd)*2
|
||||
glMatrixMode: ;mode
|
||||
push dword[esp] ;копируем адрес возврата
|
||||
push eax
|
||||
lea eax,[esp+8]
|
||||
mov dword[eax],OP_MatrixMode
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
pop eax
|
||||
ret 8 ;=sizeof(dd)*2
|
||||
|
||||
align 4
|
||||
proc glLoadMatrixf uses ecx edi esi, m:dword
|
||||
@@ -394,24 +312,15 @@ endl
|
||||
sub edi,64 ;=sizeof(M4)
|
||||
rep movsd
|
||||
|
||||
mov ecx,ebp
|
||||
sub ecx,68 ;=sizeof(dd)*17
|
||||
lea ecx,[ebp-68] ;=sizeof(dd)*17
|
||||
stdcall gl_add_op,ecx
|
||||
ret
|
||||
endp
|
||||
|
||||
align 4
|
||||
proc glLoadIdentity uses eax
|
||||
locals
|
||||
p dd ?
|
||||
endl
|
||||
mov dword[p],OP_LoadIdentity
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,4 ;=sizeof(dd)*1
|
||||
stdcall gl_add_op,eax
|
||||
glLoadIdentity:
|
||||
stdcall gl_add_op,op_LoadIdentity
|
||||
ret
|
||||
endp
|
||||
|
||||
align 4
|
||||
proc glMultMatrixf uses ecx edi esi, m:dword
|
||||
@@ -425,117 +334,60 @@ endl
|
||||
sub edi,64 ;=sizeof(M4)
|
||||
rep movsd
|
||||
|
||||
mov ecx,ebp
|
||||
sub ecx,68 ;=sizeof(dd)*17
|
||||
lea ecx,[ebp-68] ;=sizeof(dd)*17
|
||||
stdcall gl_add_op,ecx
|
||||
ret
|
||||
endp
|
||||
|
||||
align 4
|
||||
proc glPushMatrix uses eax
|
||||
locals
|
||||
p dd ?
|
||||
endl
|
||||
mov dword[p],OP_PushMatrix
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,4 ;=sizeof(dd)*1
|
||||
stdcall gl_add_op,eax
|
||||
glPushMatrix:
|
||||
stdcall gl_add_op,op_PushMatrix
|
||||
ret
|
||||
endp
|
||||
|
||||
align 4
|
||||
proc glPopMatrix uses eax
|
||||
locals
|
||||
p dd ?
|
||||
endl
|
||||
mov dword[p],OP_PopMatrix
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,4 ;=sizeof(dd)*1
|
||||
stdcall gl_add_op,eax
|
||||
glPopMatrix:
|
||||
stdcall gl_add_op,op_PopMatrix
|
||||
ret
|
||||
endp
|
||||
|
||||
align 4
|
||||
proc glRotatef uses eax, angle:dword, x:dword, y:dword, z:dword
|
||||
locals
|
||||
p rd 5
|
||||
endl
|
||||
mov dword[p],OP_Rotate
|
||||
mov eax,[angle]
|
||||
mov dword[p+4],eax
|
||||
mov eax,[x]
|
||||
mov dword[p+8],eax
|
||||
mov eax,[y]
|
||||
mov dword[p+12],eax
|
||||
mov eax,[z]
|
||||
mov dword[p+16],eax
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,20 ;=sizeof(dd)*5
|
||||
glRotatef: ;angle, x, y, z
|
||||
push dword[esp] ;копируем адрес возврата
|
||||
push eax
|
||||
lea eax,[esp+8]
|
||||
mov dword[eax],OP_Rotate
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
pop eax
|
||||
ret 20 ;=sizeof(dd)*5
|
||||
|
||||
align 4
|
||||
proc glTranslatef uses eax, x:dword, y:dword, z:dword
|
||||
locals
|
||||
p rd 4
|
||||
endl
|
||||
mov dword[p],OP_Translate
|
||||
mov eax,[x]
|
||||
mov dword[p+4],eax
|
||||
mov eax,[y]
|
||||
mov dword[p+8],eax
|
||||
mov eax,[z]
|
||||
mov dword[p+12],eax
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,16 ;=sizeof(dd)*4
|
||||
glTranslatef: ;x, y, z
|
||||
push dword[esp] ;копируем адрес возврата
|
||||
push eax
|
||||
lea eax,[esp+8]
|
||||
mov dword[eax],OP_Translate
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
pop eax
|
||||
ret 16 ;=sizeof(dd)*4
|
||||
|
||||
align 4
|
||||
proc glScalef uses eax, x:dword, y:dword, z:dword
|
||||
locals
|
||||
p rd 4
|
||||
endl
|
||||
mov dword[p],OP_Scale
|
||||
mov eax,[x]
|
||||
mov dword[p+4],eax
|
||||
mov eax,[y]
|
||||
mov dword[p+8],eax
|
||||
mov eax,[z]
|
||||
mov dword[p+12],eax
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,16 ;=sizeof(dd)*4
|
||||
glScalef: ;x, y, z
|
||||
push dword[esp] ;копируем адрес возврата
|
||||
push eax
|
||||
lea eax,[esp+8]
|
||||
mov dword[eax],OP_Scale
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
pop eax
|
||||
ret 16 ;=sizeof(dd)*4
|
||||
|
||||
align 4
|
||||
proc glViewport uses eax, x:dword, y:dword, width:dword, heigh:dword
|
||||
locals
|
||||
p rd 5
|
||||
endl
|
||||
mov dword[p],OP_Viewport
|
||||
mov eax,[x]
|
||||
mov dword[p+4],eax
|
||||
mov eax,[y]
|
||||
mov dword[p+8],eax
|
||||
mov eax,[width]
|
||||
mov dword[p+12],eax
|
||||
mov eax,[heigh]
|
||||
mov dword[p+16],eax
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,20 ;=sizeof(dd)*5
|
||||
glViewport: ;x, y, width, heigh
|
||||
push dword[esp] ;копируем адрес возврата
|
||||
push eax
|
||||
lea eax,[esp+8]
|
||||
mov dword[eax],OP_Viewport
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
pop eax
|
||||
ret 20 ;=sizeof(dd)*5
|
||||
|
||||
align 4
|
||||
proc glFrustum uses eax, left:qword, right:qword, bottom:qword, top:qword,\
|
||||
@@ -557,8 +409,7 @@ endl
|
||||
fld qword[farv]
|
||||
fstp dword[p+24]
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,28 ;=sizeof(dd)*7
|
||||
lea eax,[ebp-28] ;=sizeof(dd)*7
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
@@ -621,8 +472,7 @@ endl
|
||||
mov dword[p+24],0.0
|
||||
@@:
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,28 ;=sizeof(dd)*7
|
||||
lea eax,[ebp-28] ;=sizeof(dd)*7
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
@@ -643,28 +493,20 @@ endl
|
||||
mov dword[p+20],0.0
|
||||
mov dword[p+24],0.0
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,28 ;=sizeof(dd)*7
|
||||
lea eax,[ebp-28] ;=sizeof(dd)*7
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
|
||||
align 4
|
||||
proc glColorMaterial uses eax, mode:dword, type:dword
|
||||
locals
|
||||
p rd 3
|
||||
endl
|
||||
mov dword[p],OP_ColorMaterial
|
||||
mov eax,[mode]
|
||||
mov dword[p+4],eax
|
||||
mov eax,[type]
|
||||
mov dword[p+8],eax
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,12 ;=sizeof(dd)*3
|
||||
glColorMaterial: ;mode, type
|
||||
push dword[esp] ;копируем адрес возврата
|
||||
push eax
|
||||
lea eax,[esp+8]
|
||||
mov dword[eax],OP_ColorMaterial
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
pop eax
|
||||
ret 12 ;=sizeof(dd)*3
|
||||
|
||||
align 4
|
||||
proc glLightfv uses eax ecx, light:dword, type:dword, v:dword
|
||||
@@ -688,8 +530,7 @@ endl
|
||||
mov ecx,[eax+12]
|
||||
mov dword[p+24],ecx
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,28 ;=sizeof(dd)*7
|
||||
lea eax,[ebp-28] ;=sizeof(dd)*7
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
@@ -710,8 +551,7 @@ endl
|
||||
mov dword[p+20],0.0
|
||||
mov dword[p+24],0.0
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,28 ;=sizeof(dd)*7
|
||||
lea eax,[ebp-28] ;=sizeof(dd)*7
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
@@ -731,8 +571,7 @@ endl
|
||||
mov dword[p+16],0.0
|
||||
mov dword[p+20],0.0
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,24 ;=sizeof(dd)*6
|
||||
lea eax,[ebp-24] ;=sizeof(dd)*6
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
@@ -755,8 +594,7 @@ endl
|
||||
mov ecx,[eax+12]
|
||||
mov dword[p+20],ecx
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,24 ;=sizeof(dd)*6
|
||||
lea eax,[ebp-24] ;=sizeof(dd)*6
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
@@ -764,19 +602,14 @@ endp
|
||||
; clear
|
||||
|
||||
align 4
|
||||
proc glClear uses eax, mask:dword
|
||||
locals
|
||||
p rd 2
|
||||
endl
|
||||
mov dword[p],OP_Clear
|
||||
mov eax,[mask]
|
||||
mov dword[p+4],eax
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,8 ;=sizeof(dd)*2
|
||||
glClear: ;mask
|
||||
push dword[esp] ;копируем адрес возврата
|
||||
push eax
|
||||
lea eax,[esp+8]
|
||||
mov dword[eax],OP_Clear
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
pop eax
|
||||
ret 8 ;=sizeof(dd)*2
|
||||
|
||||
align 4
|
||||
proc glClearColor uses eax, r:dword, g:dword, b:dword, a:dword
|
||||
@@ -793,8 +626,7 @@ endl
|
||||
mov eax,[a]
|
||||
mov dword[p+16],eax
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,20 ;=sizeof(dd)*5
|
||||
lea eax,[ebp-20] ;=sizeof(dd)*5
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
@@ -809,8 +641,7 @@ endl
|
||||
fld qword[eax]
|
||||
fstp dword[p+4]
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,8 ;=sizeof(dd)*2
|
||||
lea eax,[ebp-8] ;=sizeof(dd)*2
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
@@ -818,43 +649,24 @@ endp
|
||||
; textures
|
||||
|
||||
align 4
|
||||
proc glTexImage2D uses ecx edi esi,\
|
||||
target:dword, level:dword, components:dword,\
|
||||
width:dword, height:dword, border:dword,\
|
||||
format:dword, type:dword, pixels:dword
|
||||
locals
|
||||
p rd 10
|
||||
endl
|
||||
mov dword[p],OP_TexImage2D
|
||||
mov ecx,9
|
||||
mov esi,ebp
|
||||
add esi,8 ;указатель на стек с входными параметрами
|
||||
mov edi,ebp
|
||||
sub edi,36 ;указатель на стек с локальным массивом
|
||||
rep movsd ;копирование в цикле 9-ти входных параметров
|
||||
|
||||
mov ecx,ebp
|
||||
sub ecx,40 ;=sizeof(dd)*10
|
||||
stdcall gl_add_op,ecx
|
||||
ret
|
||||
endp
|
||||
glTexImage2D: ;target, level, components, width, height, border, format, type, pixels
|
||||
push dword[esp] ;копируем адрес возврата
|
||||
push eax
|
||||
lea eax,[esp+8]
|
||||
mov dword[eax],OP_TexImage2D
|
||||
stdcall gl_add_op,eax
|
||||
pop eax
|
||||
ret 40 ;=sizeof(dd)*10
|
||||
|
||||
align 4
|
||||
proc glBindTexture uses eax, target:dword, texture:dword
|
||||
locals
|
||||
p rd 3
|
||||
endl
|
||||
mov dword[p],OP_BindTexture
|
||||
mov eax,[target]
|
||||
mov dword[p+4],eax
|
||||
mov eax,[texture]
|
||||
mov dword[p+8],eax
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,12 ;=sizeof(dd)*3
|
||||
glBindTexture: ;target, texture
|
||||
push dword[esp] ;копируем адрес возврата
|
||||
push eax
|
||||
lea eax,[esp+8]
|
||||
mov dword[eax],OP_BindTexture
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
pop eax
|
||||
ret 12 ;=sizeof(dd)*3
|
||||
|
||||
align 4
|
||||
proc glTexEnvi uses eax, target:dword, pname:dword, param:dword
|
||||
@@ -873,8 +685,7 @@ endl
|
||||
mov dword[p+24],0.0
|
||||
mov dword[p+28],0.0
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,32 ;=sizeof(dd)*8
|
||||
lea eax,[ebp-32] ;=sizeof(dd)*8
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
@@ -896,120 +707,74 @@ endl
|
||||
mov dword[p+24],0.0
|
||||
mov dword[p+28],0.0
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,32 ;=sizeof(dd)*8
|
||||
lea eax,[ebp-32] ;=sizeof(dd)*8
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
|
||||
align 4
|
||||
proc glPixelStorei uses eax, pname:dword, param:dword
|
||||
locals
|
||||
p rd 3
|
||||
endl
|
||||
mov dword[p],OP_PixelStore
|
||||
mov eax,[pname]
|
||||
mov dword[p+4],eax
|
||||
mov eax,[param]
|
||||
mov dword[p+8],eax
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,12 ;=sizeof(dd)*3
|
||||
glPixelStorei: ;pname, param
|
||||
push dword[esp] ;копируем адрес возврата
|
||||
push eax
|
||||
lea eax,[esp+8]
|
||||
mov dword[eax],OP_PixelStore
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
pop eax
|
||||
ret 12 ;=sizeof(dd)*3
|
||||
|
||||
; selection
|
||||
|
||||
align 4
|
||||
proc glInitNames uses eax
|
||||
locals
|
||||
p dd ?
|
||||
endl
|
||||
mov dword[p],OP_InitNames
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,4 ;=sizeof(dd)*1
|
||||
stdcall gl_add_op,eax
|
||||
glInitNames:
|
||||
stdcall gl_add_op,op_InitNames
|
||||
ret
|
||||
endp
|
||||
|
||||
align 4
|
||||
proc glPushName uses eax, name:dword
|
||||
locals
|
||||
p rd 2
|
||||
endl
|
||||
mov dword[p],OP_PushName
|
||||
mov eax,[name]
|
||||
mov dword[p+4],eax
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,8 ;=sizeof(dd)*2
|
||||
glPushName: ;name
|
||||
push dword[esp] ;копируем адрес возврата
|
||||
push eax
|
||||
lea eax,[esp+8]
|
||||
mov dword[eax],OP_PushName
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
pop eax
|
||||
ret 8 ;=sizeof(dd)*2
|
||||
|
||||
align 4
|
||||
proc glPopName uses eax
|
||||
locals
|
||||
p dd ?
|
||||
endl
|
||||
mov dword[p],OP_PopName
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,4 ;=sizeof(dd)*1
|
||||
stdcall gl_add_op,eax
|
||||
glPopName:
|
||||
stdcall gl_add_op,op_PopName
|
||||
ret
|
||||
endp
|
||||
|
||||
align 4
|
||||
proc glLoadName uses eax, name:dword
|
||||
locals
|
||||
p rd 2
|
||||
endl
|
||||
mov dword[p],OP_LoadName
|
||||
mov eax,[name]
|
||||
mov dword[p+4],eax
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,8 ;=sizeof(dd)*2
|
||||
glLoadName: ;name
|
||||
push dword[esp] ;копируем адрес возврата
|
||||
push eax
|
||||
lea eax,[esp+8]
|
||||
mov dword[eax],OP_LoadName
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
pop eax
|
||||
ret 8 ;=sizeof(dd)*2
|
||||
|
||||
align 4
|
||||
proc glPolygonOffset uses eax, factor:dword, units:dword
|
||||
locals
|
||||
p rd 3
|
||||
endl
|
||||
mov dword[p],OP_PolygonOffset
|
||||
mov eax,[factor]
|
||||
mov dword[p+4],eax
|
||||
mov eax,[units]
|
||||
mov dword[p+8],eax
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,12 ;=sizeof(dd)*3
|
||||
glPolygonOffset: ;factor, units
|
||||
push dword[esp] ;копируем адрес возврата
|
||||
push eax
|
||||
lea eax,[esp+8]
|
||||
mov dword[eax],OP_PolygonOffset
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
pop eax
|
||||
ret 12 ;=sizeof(dd)*3
|
||||
|
||||
; Special Functions
|
||||
|
||||
align 4
|
||||
proc glCallList uses eax, list:dword
|
||||
locals
|
||||
p rd 2
|
||||
endl
|
||||
mov dword[p],OP_CallList
|
||||
mov eax,[list]
|
||||
mov dword[p+4],eax
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,8 ;=sizeof(dd)*2
|
||||
glCallList: ;list
|
||||
push dword[esp] ;копируем адрес возврата
|
||||
push eax
|
||||
lea eax,[esp+8]
|
||||
mov dword[eax],OP_CallList
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
pop eax
|
||||
ret 8 ;=sizeof(dd)*2
|
||||
|
||||
align 4
|
||||
proc glFlush ;(void)
|
||||
@@ -1018,21 +783,14 @@ proc glFlush ;(void)
|
||||
endp
|
||||
|
||||
align 4
|
||||
proc glHint uses eax, target:dword, mode:dword
|
||||
locals
|
||||
p rd 3
|
||||
endl
|
||||
mov dword[p],OP_Hint
|
||||
mov eax,[target]
|
||||
mov dword[p+4],eax
|
||||
mov eax,[mode]
|
||||
mov dword[p+8],eax
|
||||
|
||||
mov eax,ebp
|
||||
sub eax,12 ;=sizeof(dd)*3
|
||||
glHint: ;target, mode
|
||||
push dword[esp] ;копируем адрес возврата
|
||||
push eax
|
||||
lea eax,[esp+8]
|
||||
mov dword[eax],OP_Hint
|
||||
stdcall gl_add_op,eax
|
||||
ret
|
||||
endp
|
||||
pop eax
|
||||
ret 12 ;=sizeof(dd)*3
|
||||
|
||||
; Non standard functions
|
||||
|
||||
|
Reference in New Issue
Block a user