Main sections
SETORIENTATION
SETORIENTATION iMode%
Sets the orientation (where the device displays top) on the device. With this, all graphics, mouse positions and joystickdata are rotated as well.
GRABSPRITE with an orientation unequal 0 causes a slowdown.
"Top" position per iMode:
0=[top]
1=[right]
2=[bottom]
3=[left]
// Test mode: 320x480
X_OBJSTART 0
X_OBJADDVERTEX 0, 20, 0, 0,0,0xffffff
X_OBJADDVERTEX 0,-20, 10, 0,0,0xff0000
X_OBJADDVERTEX 0,-20,-10, 0,0,0x0000ff
X_OBJNEWGROUP
X_OBJADDVERTEX 0, 20,0, 0,0,0xffffff
X_OBJADDVERTEX 30,-10,0, 0,0,0xff0000
X_OBJADDVERTEX -30,-10,0, 0,0,0x0000ff
X_OBJNEWGROUP
X_OBJADDVERTEX 10.5,-15, 10.5, 0,0,0x00ffff
X_OBJADDVERTEX 10.5, 15, 10.5, 0,0,0x00ffff
X_OBJADDVERTEX -10.5,-15, -10.5, 0,0,0x00ffff
X_OBJADDVERTEX -10.5, 15, -10.5, 0,0,0x00ffff
X_OBJEND
LOCAL mx%, my%, b1%, b2%
LOCAL irot% = 0
WHILE TRUE
IF KEY(2) THEN irot=0
IF KEY(3) THEN irot=1
IF KEY(4) THEN irot=2
IF KEY(5) THEN irot=3
// rotate the screen. Stays locked until you change that!
SETORIENTATION irot
// mouse position on screen (in screen pixels - not device)
MOUSESTATE mx, my, b1, b2
// print where mouse is and rotation index
PRINT "Rot: "+irot+"Mouse: "+FORMAT$(4,0,mx)+ ", "+FORMAT$(4,0,my), 0,0
// get the full viewport
LOCAL vpx%, vpy%, x%, y%
GETVIEWPORT x, y, vpx, vpy
DRAWLINE x, y, vpx, y, RGB(255,128,128)
DRAWLINE x, y, x, vpy, RGB(255,128,128)
DRAWLINE x+vpx-1,y, x+vpx-1,vpy, RGB(255,128,128)
DRAWLINE x, y+vpy-1,vpx, y+vpy-1, RGB(255,128,128)
PRINT "VP: "+x+","+y+" "+vpx+"x"+vpy, 0,20
// and screen size
GETSCREENSIZE vpx, vpy
PRINT "SC: "+vpx+"x"+vpy, 0,40
// draw line to viewport rect
DRAWLINE vpx, vpy, 50+200,100+100, RGB(0,255,255)
// render to a viewport area
VIEWPORT 50,100, 200,100
// make sure we don't paint outside the viewport
DRAWRECT -999,-999,2000,2000,RGB(64,64,128)
// render 3D into that viewport
do3D()
// start rendering in 2D over the same viewport again
X_MAKE2D
VIEWPORT 50,100, 200,100
PRINT "2D Viewport 200x100",0,0
// is the size correct?
GETVIEWPORT x, y, vpx, vpy
PRINT "VP: "+x+","+y+" "+vpx+"x"+vpy, 0,20
// now grab that viewport and paste it again
VIEWPORT 0,0,0,0
GRABSPRITE 1, 50,100,200,100
DRAWSPRITE 1, 50,201
// mouse position
DRAWRECT mx-4, my-4, 8,8,RGB(255,255,0)
SHOWSCREEN
WEND
FUNCTION do3D:
ALPHAMODE 0
X_CULLMODE 0
X_MAKE3D 1, 100, 45
X_CAMERA 3,3,40, 0,0,0
X_ROTATION GETTIMERALL()*0.1, 0,1,0
X_DRAWOBJ 0,0
ENDFUNCTION