MASM32 и OpenGL
Это не так сложно, как на самом деле

Позиционирование плоскости

Для позиционирования плоскости (или любогодругого объекта) используется функция:

; #########################################################################
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:

Скачать исходники и ехе-файл.

©   Короленко М.В., 2011       
Перепечатка материалов возможна только после согласования с автором при условии обязательной ссылки на сайт