Позиционирование плоскости
Для позиционирования плоскости (или любогодругого объекта) используется функция:
; #########################################################################
Put2Scene PROC ListNumber:DWORD,ZYXPosition:DWORD
mov eax,ZYXPosition
invoke glTranslatef,[eax],[eax+4],[eax+8]
mov eax,ZYXPosition
invoke glRotatef,[eax+12],[eax+16],[eax+20],[eax+24]
invoke glCallList,ListNumber
ret
Put2Scene ENDP
; #########################################################################
Прототип функции:
Put2Scene PROTO :DWORD,:DWORD
Функция позволяет перемещать и поворачивать объект, положение и углы поворота объекта задаются в массиве:
Position1 dd 0.0,0.0,-9.0,-80.0,0.0,1.0,0.0
Вызов функции в процедуре DrawScene требует сохранения текущей матрицы в стеке:
; #########################################################################
DrawScene PROC
invoke glClear,GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT
invoke glPushMatrix
invoke Put2Scene,1,ADDR Position1
invoke glPopMatrix
invoke SwapBuffers,MainHDC
ret
DrawScene ENDP
; #########################################################################
Пример работы программы, плоскость из предыдущего примера поворачивается на угол -80o по оси Y: