Игральная кость и кубик Рубика
Прототип функции создания куба:
CreateCube PROTO :DWORD
Создаем куб и для каждой грани включаем нужную текстуру. После завершения отрисовки грани текстуру выключаем. И так шесть раз:
; #########################################################################
CreateCube PROC ListNumber:DWORD
LOCAL aBox:DWORD
invoke glNewList,ListNumber,GL_COMPILE_AND_EXECUTE
invoke gluNewQuadric
mov aBox,eax
invoke gluQuadricDrawStyle,aBox,GL_FILL
invoke gluQuadricNormals,aBox,GL_SMOOTH
invoke glBindTexture,GL_TEXTURE_2D,1
invoke glEnable,GL_TEXTURE_2D
invoke glBegin,GL_QUADS
toptx(Topt1)
top(Topb1)
toptx(Topt2)
top(Topb4)
toptx(Topt3)
top(Topb3)
toptx(Topt4)
top(Topb2)
invoke glEnd
invoke glDisable,GL_TEXTURE_2D
invoke glBindTexture,GL_TEXTURE_2D,2
invoke glEnable,GL_TEXTURE_2D
invoke glBegin,GL_QUADS
toptx(Topt1)
top(Topb2)
toptx(Topt2)
top(Topb6)
toptx(Topt3)
top(Topb7)
toptx(Topt4)
top(Topb3)
invoke glEnd
invoke glDisable,GL_TEXTURE_2D
invoke glBindTexture,GL_TEXTURE_2D,3
invoke glEnable,GL_TEXTURE_2D
invoke glBegin,GL_QUADS
toptx(Topt1)
top(Topb6)
toptx(Topt2)
top(Topb5)
toptx(Topt3)
top(Topb8)
toptx(Topt4)
top(Topb7)
invoke glEnd
invoke glDisable,GL_TEXTURE_2D
invoke glBindTexture,GL_TEXTURE_2D,4
invoke glEnable,GL_TEXTURE_2D
invoke glBegin,GL_QUADS
toptx(Topt1)
top(Topb5)
toptx(Topt2)
top(Topb1)
toptx(Topt3)
top(Topb4)
toptx(Topt4)
top(Topb8)
invoke glEnd
invoke glDisable,GL_TEXTURE_2D
invoke glBindTexture,GL_TEXTURE_2D,5
invoke glEnable,GL_TEXTURE_2D
invoke glBegin,GL_QUADS
toptx(Topt1)
top(Topb1)
toptx(Topt2)
top(Topb2)
toptx(Topt3)
top(Topb6)
toptx(Topt4)
top(Topb5)
invoke glEnd
invoke glDisable,GL_TEXTURE_2D
invoke glBindTexture,GL_TEXTURE_2D,6
invoke glEnable,GL_TEXTURE_2D
invoke glBegin,GL_QUADS
toptx(Topt1)
top(Topb3)
toptx(Topt2)
top(Topb7)
toptx(Topt3)
top(Topb8)
toptx(Topt4)
top(Topb4)
invoke glEnd
invoke glDisable,GL_TEXTURE_2D
invoke glEndList
mov eax,aBox
ret
CreateCube ENDP
; #########################################################################
В секции данных необходимо определить координаты вершин куба:
Topb1 dd 0.0,0.0,0.0
Topb2 dd 1.0,0.0,0.0
Topb3 dd 1.0,1.0,0.0
Topb4 dd 0.0,1.0,0.0
Topb5 dd 0.0,0.0,1.0
Topb6 dd 1.0,0.0,1.0
Topb7 dd 1.0,1.0,1.0
Topb8 dd 0.0,1.0,1.0
И текстурные координаты
Topt1 dd 0.0,0.0
Topt2 dd 0.0,1.0
Topt3 dd 1.0,1.0
Topt4 dd 1.0,0.0
Пример первый - игральная кость:
Второй пример - кубик Рубика: