Что-то я никак скриншот не закачаю никуда, так что смотрим картинку в кварке

Ой, нет, закачал

Код:
0 VALUE ActiveLibrary
: FUNCTION ActiveLibrary SWAP GETPROCADDRESS VALUE ;
" opengl32.dll" LOADLIBRARY VALUE OPENGL
OPENGL TO ActiveLibrary
: ? DUP 0 = IF . THEN ;
" glViewport" FUNCTION glViewPort@ : glViewPort glViewPort@ API4 DROP ;
" glPointSize" FUNCTION glPointSize@ : glPointSize glPointSize@ API1 DROP ;
" glColor3i" FUNCTION glColor3i@ : glColor3i glColor3i@ API3 DROP ;
" glColor3ubv" FUNCTION glColor3ubv@ : glColor3ubv glColor3ubv@ API1 DROP ;
" glColor4ubv" FUNCTION glColor4ubv@ : glColor4ubv glColor4ubv@ API1 DROP ;
" glVertex2dv" FUNCTION glVertex2dv@ : glVertex2dv glVertex2dv@ API1 DROP ;
" glVertex3dv" FUNCTION glVertex3dv@ : glVertex3dv glVertex3dv@ API1 DROP ;
" glBegin" FUNCTION glBegin@ : glBegin glBegin@ API1 DROP ;
" glEnd" FUNCTION glEnd@ : glEnd glEnd@ API0 DROP ;
" glEnable" FUNCTION glEnable@ : glEnable glEnable@ API1 DROP ;
" glDisable" FUNCTION glDisable@ : glDisable glDisable@ API1 DROP ;
" glClear" FUNCTION glClear@ : glClear glClear@ API1 DROP ;
" glPushMatrix" FUNCTION glPushMatrix@ : glPushMatrix glPushMatrix@ API0 DROP ;
" glPopMatrix" FUNCTION glPopMatrix@ : glPopMatrix glPopMatrix@ API0 DROP ;
" glFrustum" FUNCTION glFrustum@ : glFrustum 6 glFrustum@ API DROP ;
" glTranslatef" FUNCTION glTranslatef@ : glTranslatef glTranslatef@ API3 DROP ;
" glTexImage2D" FUNCTION glTexImage2D@ : glTexImage2D glTexImage2D@ API9 DROP ;
" glTexParameteri" FUNCTION glTexParameteri@ : glTexParameteri glTexParameteri@ API3 DROP ;
" glTexCoord2dv" FUNCTION glTexCoord2dv@ : glTexCoord2dv glTexCoord2dv@ API1 DROP ;
" glTexEnvf" FUNCTION glTexEnvf@ : glTexEnvf glTexEnvf@ API3 DROP ;
CREATE AUX3D[] 24 ALLOT
: 3dpoint
S>F 1000.0 F/ AUX3D[] 16 + F!
S>F 1000.0 F/ AUX3D[] 8 + F!
S>F 1000.0 F/ AUX3D[] F!
AUX3D[] glVertex3dv
;
CREATE TexPoint0 0.0 F, 0.0 F, 0.0 F,
CREATE TexPoint1 1.0 F, 0.0 F, 0.0 F,
CREATE TexPoint2 1.0 F, 1.0 F, 0.0 F,
CREATE TexPoint3 0.0 F, 1.0 F, 0.0 F,
CREATE Point0 0.0 F, 0.0 F, 0.0 F,
CREATE Point1 -1.0 F, 0.0 F, 0.0 F,
CREATE Point2 1.0 F, 0.0 F, 0.0 F,
CREATE Point3 0.0 F, 1.0 F, 0.0 F,
CREATE Point4 0.0 F, -1.0 F, 0.0 F,
CREATE Point5 0.0 F, 0.0 F, 1.0 F,
CREATE Point6 0.0 F, 0.0 F, -1.0 F,
CREATE Triangle1A 0.0 F, 0.0 F, -0.50 F,
CREATE Triangle1B 0.0 F, 0.5 F, -0.51 F,
CREATE Triangle1C 1.0 F, 0.9 F, -0.59 F,
FLOAT NX 1420.0 NX F!
FLOAT NY 320.0 NY F!
FLOAT NZ
: X+ NX F@ 10.0 F+ NX F! NX F@ 360.0 F> IF NX F@ 360.0 F- NX F! THEN
;
: X- NX F@ 10.0 F- NX F! NY F@ 0.0 F< IF NX F@ 360.0 F+ NX F! THEN
;
: Y+ NY F@ 10.0 F+ NY F! NY F@ 360.0 F> IF NY F@ 360.0 F- NY F! THEN ;
: Y- NY F@ 10.0 F- NY F! NY F@ 0.0 F< IF NY F@ 360.0 F+ NY F! THEN ;
: Z+ NZ F@ 10.0 F+ NZ F! NZ F@ 360.0 F> IF NZ F@ 360.0 F- NZ F! THEN ;
: Z- NZ F@ 10.0 F- NZ F! NZ F@ 0.0 F< IF NZ F@ 360.0 F+ NZ F! THEN ;
FLOAT ENGINE.X 0.0 ENGINE.X F!
FLOAT ENGINE.Y 0.0 ENGINE.Y F!
FLOAT ENGINE.Z 0.0 ENGINE.Z F!
FLOAT ENGINE.DIAMETER 0.08 ENGINE.DIAMETER F!
FLOAT ENGINE.L 0.4 ENGINE.L F!
: DRAW-ENGINE
0x7FFFFFFF DUP DUP glColor3i
40 0 DO
GL_QUADS glBegin
I S>F 40.0 F/ 2.0 F* PI F* FCOS ENGINE.DIAMETER F@ F* ENGINE.X F@ F+ Point1 F!
I S>F 40.0 F/ 2.0 F* PI F* FSIN ENGINE.DIAMETER F@ F* ENGINE.Y F@ F+ Point1 8 + F!
ENGINE.L F@ -0.5 F* ENGINE.Z F@ F+ Point1 16 + F!
I 1 + S>F 40.0 F/ 2.0 F* PI F* FCOS ENGINE.DIAMETER F@ F* ENGINE.X F@ F+ Point2 F!
I 1 + S>F 40.0 F/ 2.0 F* PI F* FSIN ENGINE.DIAMETER F@ F* ENGINE.Y F@ F+ Point2 8 + F!
ENGINE.L F@ -0.5 F* ENGINE.Z F@ F+ Point2 16 + F!
I 1 + S>F 40.0 F/ 2.0 F* PI F* FCOS ENGINE.DIAMETER F@ F* ENGINE.X F@ F+ Point3 F!
I 1 + S>F 40.0 F/ 2.0 F* PI F* FSIN ENGINE.DIAMETER F@ F* ENGINE.Y F@ F+ Point3 8 + F!
ENGINE.L F@ 0.5 F* ENGINE.Z F@ F+ Point3 16 + F!
I S>F 40.0 F/ 2.0 F* PI F* FCOS ENGINE.DIAMETER F@ F* ENGINE.X F@ F+ Point4 F!
I S>F 40.0 F/ 2.0 F* PI F* FSIN ENGINE.DIAMETER F@ F* ENGINE.Y F@ F+ Point4 8 + F!
ENGINE.L F@ 0.5 F* ENGINE.Z F@ F+ Point4 16 + F!
Point1 glVertex3dv
Point2 glVertex3dv
Point3 glVertex3dv
Point4 glVertex3dv
glEnd
LOOP
0x7FFFFFFF 0 0 glColor3i
40 0 DO
GL_TRIANGLES glBegin
I S>F 40.0 F/ 2.0 F* PI F* FCOS ENGINE.DIAMETER F@ F* ENGINE.X F@ F+ Point1 F!
I S>F 40.0 F/ 2.0 F* PI F* FSIN ENGINE.DIAMETER F@ F* ENGINE.Y F@ F+ Point1 8 + F!
ENGINE.L F@ -0.5 F* ENGINE.Z F@ F+ Point1 16 + F!
I 1 + S>F 40.0 F/ 2.0 F* PI F* FCOS ENGINE.DIAMETER F@ F* ENGINE.X F@ F+ Point2 F!
I 1 + S>F 40.0 F/ 2.0 F* PI F* FSIN ENGINE.DIAMETER F@ F* ENGINE.Y F@ F+ Point2 8 + F!
ENGINE.L F@ -0.5 F* ENGINE.Z F@ F+ Point2 16 + F!
0.0 ENGINE.X F@ F+ Point3 F!
0.0 ENGINE.Y F@ F+ Point3 8 + F!
ENGINE.L F@ 0.5 F* ENGINE.Z F@ F+ Point3 16 + F!
Point1 glVertex3dv
Point2 glVertex3dv
Point3 glVertex3dv
glEnd
LOOP
;
: DRAW-HULL
0x3FFFFFFF DUP DUP glColor3i
-0.3 Point1 F! 0.1 Point1 8 + F! 0.2 Point1 16 + F!
-0.2 Point2 F! 0.1 Point2 8 + F! 0.7 Point2 16 + F!
0.2 Point3 F! 0.1 Point3 8 + F! 0.7 Point3 16 + F!
0.3 Point4 F! 0.1 Point4 8 + F! 0.2 Point4 16 + F!
GL_QUADS glBegin
Point1 glVertex3dv
Point2 glVertex3dv
Point3 glVertex3dv
Point4 glVertex3dv
glEnd
-0.3 Point1 F! -0.1 Point1 8 + F! 0.2 Point1 16 + F!
-0.2 Point2 F! -0.1 Point2 8 + F! 0.7 Point2 16 + F!
0.2 Point3 F! -0.1 Point3 8 + F! 0.7 Point3 16 + F!
0.3 Point4 F! -0.1 Point4 8 + F! 0.2 Point4 16 + F!
GL_QUADS glBegin
Point1 glVertex3dv
Point2 glVertex3dv
Point3 glVertex3dv
Point4 glVertex3dv
glEnd
-0.3 Point1 F! -0.1 Point1 8 + F! 0.2 Point1 16 + F!
-0.2 Point2 F! -0.1 Point2 8 + F! 0.7 Point2 16 + F!
-0.2 Point3 F! 0.1 Point3 8 + F! 0.7 Point3 16 + F!
-0.3 Point4 F! 0.1 Point4 8 + F! 0.2 Point4 16 + F!
GL_QUADS glBegin
Point1 glVertex3dv
Point2 glVertex3dv
Point3 glVertex3dv
Point4 glVertex3dv
glEnd
0.3 Point1 F! -0.1 Point1 8 + F! 0.2 Point1 16 + F!
0.2 Point2 F! -0.1 Point2 8 + F! 0.7 Point2 16 + F!
0.2 Point3 F! 0.1 Point3 8 + F! 0.7 Point3 16 + F!
0.3 Point4 F! 0.1 Point4 8 + F! 0.2 Point4 16 + F!
GL_QUADS glBegin
Point1 glVertex3dv
Point2 glVertex3dv
Point3 glVertex3dv
Point4 glVertex3dv
glEnd
0x7FFFFFFF DUP DUP glColor3i
0.0 Point1 F! 0.0 Point1 8 + F! 1.2 Point1 16 + F!
0.2 Point2 F! -0.1 Point2 8 + F! 0.7 Point2 16 + F!
0.2 Point3 F! 0.1 Point3 8 + F! 0.7 Point3 16 + F!
GL_TRIANGLES glBegin
Point1 glVertex3dv
Point2 glVertex3dv
Point3 glVertex3dv
glEnd
0.0 Point1 F! 0.0 Point1 8 + F! 1.2 Point1 16 + F!
-0.2 Point2 F! -0.1 Point2 8 + F! 0.7 Point2 16 + F!
-0.2 Point3 F! 0.1 Point3 8 + F! 0.7 Point3 16 + F!
GL_TRIANGLES glBegin
Point1 glVertex3dv
Point2 glVertex3dv
Point3 glVertex3dv
glEnd
0 0x3FFFFFFF DUP glColor3i
0.0 Point1 F! 0.0 Point1 8 + F! 1.2 Point1 16 + F!
-0.2 Point2 F! 0.1 Point2 8 + F! 0.7 Point2 16 + F!
0.2 Point3 F! 0.1 Point3 8 + F! 0.7 Point3 16 + F!
GL_TRIANGLES glBegin
Point1 glVertex3dv
Point2 glVertex3dv
Point3 glVertex3dv
glEnd
0x3FFFFFFF DUP DUP glColor3i
0.0 Point1 F! 0.0 Point1 8 + F! 1.2 Point1 16 + F!
-0.2 Point2 F! -0.1 Point2 8 + F! 0.7 Point2 16 + F!
0.2 Point3 F! -0.1 Point3 8 + F! 0.7 Point3 16 + F!
GL_TRIANGLES glBegin
Point1 glVertex3dv
Point2 glVertex3dv
Point3 glVertex3dv
glEnd
0x7FFFFFFF DUP DUP glColor3i
-0.5 Point1 F! 0.0 Point1 8 + F! 0.3 Point1 16 + F!
-0.2 Point2 F! 0.0 Point2 8 + F! 0.7 Point2 16 + F!
-0.25 Point3 F! 0.0 Point3 8 + F! 0.3 Point3 16 + F!
GL_TRIANGLES glBegin
Point1 glVertex3dv
Point2 glVertex3dv
Point3 glVertex3dv
glEnd
0.5 Point1 F! 0.0 Point1 8 + F! 0.3 Point1 16 + F!
0.2 Point2 F! 0.0 Point2 8 + F! 0.7 Point2 16 + F!
0.25 Point3 F! 0.0 Point3 8 + F! 0.3 Point3 16 + F!
GL_TRIANGLES glBegin
Point1 glVertex3dv
Point2 glVertex3dv
Point3 glVertex3dv
glEnd
;
: DRAW-FIRE
0 0x7FFFFFFF DUP glColor3i
-0.21 Point1 F! -0.01 Point1 8 + F! 0.9 Point1 16 + F!
-0.21 Point2 F! 0.01 Point2 8 + F! 0.9 Point2 16 + F!
-0.2 Point3 F! 0.0 Point3 8 + F! 1.2 Point3 16 + F!
GL_TRIANGLES glBegin
Point1 glVertex3dv
Point2 glVertex3dv
Point3 glVertex3dv
glEnd
-0.19 Point1 F! -0.01 Point1 8 + F! 0.9 Point1 16 + F!
-0.19 Point2 F! 0.01 Point2 8 + F! 0.9 Point2 16 + F!
-0.2 Point3 F! 0.0 Point3 8 + F! 1.2 Point3 16 + F!
GL_TRIANGLES glBegin
Point1 glVertex3dv
Point2 glVertex3dv
Point3 glVertex3dv
glEnd
-0.21 Point1 F! 0.01 Point1 8 + F! 0.9 Point1 16 + F!
-0.19 Point2 F! 0.01 Point2 8 + F! 0.9 Point2 16 + F!
-0.2 Point3 F! 0.0 Point3 8 + F! 1.2 Point3 16 + F!
GL_TRIANGLES glBegin
Point1 glVertex3dv
Point2 glVertex3dv
Point3 glVertex3dv
glEnd
-0.21 Point1 F! -0.01 Point1 8 + F! 0.9 Point1 16 + F!
-0.19 Point2 F! -0.01 Point2 8 + F! 0.9 Point2 16 + F!
-0.2 Point3 F! 0.0 Point3 8 + F! 1.2 Point3 16 + F!
GL_TRIANGLES glBegin
Point1 glVertex3dv
Point2 glVertex3dv
Point3 glVertex3dv
glEnd
;
: TEST
0 0 700 700 glViewPort
glPushMatrix
GL_DEPTH_TEST glEnable
GL_DEPTH_BUFFER_BIT glClear
GL_LIGHTING glEnable
GL_LIGHT0 glEnable
GL_LIGHT1 glEnable
GL_COLOR_MATERIAL glEnable
GL_LINE_SMOOTH glEnable
0 0x7FFFFFFF 0 glColor3i
NX F@ ROTATEANGLE SF!
1.0 glX SF!
0.0 glY SF!
0.0 glZ SF!
3DROTATE
NY F@ ROTATEANGLE SF! // -120
0.0 glX SF!
1.0 glY SF!
0.0 glZ SF!
3DROTATE
NZ F@ ROTATEANGLE SF! // 100
0.0 glX SF!
0.0 glY SF!
1.0 glZ SF!
3DROTATE
0x3FFFFFFF DUP DUP glColor3i
-0.2 ENGINE.X F!
0.0 ENGINE.Y F!
0.0 ENGINE.Z F!
DRAW-ENGINE
0.0 ENGINE.X F!
0.0 ENGINE.Y F!
0.0 ENGINE.Z F!
DRAW-ENGINE
0.2 ENGINE.X F!
0.0 ENGINE.Y F!
0.0 ENGINE.Z F!
DRAW-ENGINE
DRAW-HULL
DRAW-FIRE
glPopMatrix
;
' TEST TO 3D
' X+ TO K_UP
' X- TO K_DOWN
' Y+ TO K_LEFT
' Y- TO K_RIGHT
' Z+ TO K_PGUP
' Z- TO K_PGDOWN