|
MODE 8 rn%=0 peak=0 IF INKEY$(-256)="W" INSTALL @lib$+"D3DLIBA" ELSE INSTALL @lib$+"OGLLIB" LET nshapes=3 DIM l%(0), b%(nshapes), n%(nshapes), f%(nshapes), s%(nshapes), m%(nshapes), t%(nshapes), y(nshapes), p(nshapes), r(nshapes), X(nshapes), Y(nshapes), Z(nshapes), e(2), a(2) IF INKEY$(-256)="W" d% = FN_initd3d(@hwnd%, 1, 0) ELSE d% = FN_initgl(@hwnd%, 1, 0) IF d% = 0 ERROR 100, "Can't initialise Direct3D" b%(0) = FN_load3d(d%, @dir$+"cylinder.FVF", n%(0), f%(0), s%(0)) IF b%(0) = 0 ERROR 100, "Can't load TRIANGLE.FVF" t%(0) = FN_loadtexture(d%, @dir$+"0123456789 backup.BMP") IF t%(0) = 0 ERROR 100, "Can't load face.JPG" b%(1) = b%(0):n%(1)=n%(0):f%(1)=f%(0):s%(1)=s%(0) t%(1) = t%(0) b%(2) = FN_load3d(d%, @dir$+"triangle microup.FVF", n%(2), f%(2), s%(2)) IF b%(2) = 0 ERROR 100, "Can't load TRIANGLE.FVF" b%(3) = FN_load3d(d%, @dir$+"triangle microdown.FVF", n%(3), f%(3), s%(3)) IF b%(3) = 0 ERROR 100, "Can't load TRIANGLE.FVF" ON CLOSE PROCcleanup(nshapes,d%,b%(),t%()):QUIT ON ERROR PROCcleanup(nshapes,d%,b%(),t%()):PRINT REPORT$:END e() = 0, 0, -6 a() = 0, 0, 0 l%()=1 y(0)-=0.44 y(1)-=0.42 REM X (right left) X(0) = -0.467 X(1) = -0.52 REM Y() up and down Y(0) = -0.32 Y(1) = -0.32 REM Z() depth Z(0) = -5 Z(1) = -5 X(2)=-0 Y(2)=-0.27 Z(2)=-5.95 X(3)=-0.375 Z(3)=-5.7 Y(3)=0.05 REPEAT MOUSE mx,my,mb IF mx>54 AND mx<76 AND my>5 AND my<100 AND mb>0 THEN rn%-=1 IF mx>54 AND mx<76 AND my<236 AND my>192 AND mb>0 THEN rn%+=1 REPEAT MOUSE mx,my,mb UNTIL mb=0 IF rn%>99 THEN rn%=99 IF rn%<0 THEN rn%=0 p(0)=-(rn% MOD 10)*PI/5 p(1)=-((rn% DIV 10) MOD 10)*PI/5 ENDIF PROC_render(d%, &FF7F7F7F, 0, l%(), 4, m%(), t%(), b%(), n%(), f%(), s%(), y(), p(), r(), X(), Y(), Z(), e(), a(), PI/4, 5/4, 1, 1000, 0) :REM experimental WAIT 5 q$=INKEY$(0) UNTIL q$="q" OR q$="Q" finished%=TRUE PROCcleanup(nshapes,d%,b%(),t%()) END : DEF PROCcleanup(numshapes,d%,b%(),t%()) LOCAL x% FOR x%=0 TO numshapes t%(x%) += 0:IF t%(x%) PROC_release(t%(x%)) b%(x%) += 0:IF b%(x%) PROC_release(b%(x%)) NEXT x% d% += 0 :IF d% PROC_release(d%) ENDPROC
|