Postanowiłem się zająć OpenGLem w Asmie i próbuję napisać( kożystając z tutka) ćwiczeniowy program i natknąłem się na kłopot, mianowicie , jeśli obracam kamerę( na razie tylko taki ruch mam) to po pewnym czasie zaczyna się obracać w drugą stronę... Oto kod:
.386
.model flat,STDCALL
.data
INCLUDE OGL.INC
;-------------------------------------------------
CGLW_height equ 600
CGLW_width equ 800
CGLW_bits equ 32
Deg dd 0.0174
x dd 0.0
y dd 0.0
z dd 0.0
px dd 0.0
py dd 0.0
pz dd 0.0
ox dd 0.0
oy dd 1.0
oz dd 0.0
var dd 0.0
l dd 90.0
ang dd 0.0
rs dd 1.0
V dd 0.1
Vr dd 0.4
;-------------------------------------------------
.code
START:
INCLUDE WIN.ASM
;-------------------------------------------------
DrawGLScene:
call glLoadIdentity
push GL_COLOR_BUFFER_BIT+GL_DEPTH_BUFFER_BIT
call glClear
mov eax, x
mov var, eax
addfl var, l
mov eax, ang
mov px, eax
mulfl px, Deg
sinfl px
mulfl px, var
mov eax, z
mov var, eax
addfl var, l
mov pz, 0
addfl pz, ang
mulfl pz, Deg
cosfl pz
addfl pz, var
pushdf oz
pushdf oy
pushdf ox
pushdf pz
pushdf py
pushdf px
pushdf z
pushdf y
pushdf x
call gluLookAt
call glBegin,GL_QUADS
Color3f 0.0 0.0 1.0
Vertex3f -2.0 0.0 10.0
Color3f 11.0 0.0 0.0
Vertex3f -2.0 2.0 10.0
Color3f 0.0 1.0 0.0
Vertex3f 2.0 2.0 10.0
Color3f 0.0 1.0 1.0
Vertex3f 2.0 0.0 10.0
call glEnd
;--------------------------------------------------
keyboard:
cmp byte ptr KEY[VK_ESCAPE],TRUE
jne nie_esc
call theend
nie_esc:
cmp byte ptr KEY[VK_Q], TRUE
je onQ
cmp byte ptr KEY[VK_E], TRUE
je onE
ret
onQ:
addfl ang, Vr
ret
onE:
subfl ang, Vr
ret
theend:
mov done,TRUE
ret
;---------------------------------------------------
END START
Czy ktoś wie jak rozwiązać ten problem? Nie znam w ogóle trygonometrii, więc potrzebuję waszej pomocy( najprawdopodobniej w sinusach i cosinusach pies pogrzebany)