add function 'gluPerspective',

fix function 'glFrustum'

git-svn-id: svn://kolibrios.org@8059 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
IgorA
2020-09-09 11:56:39 +00:00
parent b81504b267
commit 5531c1c36c
4 changed files with 93 additions and 33 deletions

View File

@@ -12,6 +12,13 @@ offs_qobj_TextureFlag equ 8
offs_qobj_Normals equ 12
offs_qobj_ErrorFunc equ 16
;Так как некоторые извращенческие функции OpenGL воспринимают только параметры
;типа double (8 байт) то придется пихать их в стек макросом glpush
macro glpush GLDoubleVar {
push dword[GLDoubleVar+4]
push dword[GLDoubleVar]
}
;void drawTorus(float rc, int numc, float rt, int numt)
;{
;}
@@ -20,9 +27,43 @@ offs_qobj_ErrorFunc equ 16
;{
;}
;void gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar )
;{
;}
align 4
an360f dd 360.0
align 16
proc gluPerspective, fovy:qword, aspect:qword, zNear:qword, zFar:qword
locals
mfW dq ?
fW dq ?
mfH dq ?
fH dq ?
endl
fldpi
fmul qword[fovy]
fdiv dword[an360f]
fptan
ffree st0 ;выкидываем 1.0 которая осталось после вычисления тангенса
fincstp
fmul qword[zNear]
fld st0
fchs
fstp qword[mfH]
fst qword[fH]
fmul qword[aspect]
fld st0
fchs
fstp qword[mfW]
fstp qword[fW]
glpush zFar
glpush zNear
glpush fH
glpush mfH
glpush fW
glpush mfW
call glFrustum
ret
endp
;void gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez,
; GLdouble centerx, GLdouble centery, GLdouble centerz,