GLBasic Benutzerhandbuch

Main sections

SETORIENTATION

SETORIENTATION iMode%



Setzt die Orientierung (wo ist oben) auf dem Gerät. Dabei werden alle Grafiken, Mauspositionen und Joystickdaten mitgedreht.
GRABSPRITE ist bei Orientierungen ungleich 0 langsamer.

"Oben" Position je iMode:
0=[oben]
1=[rechts]
2=[runter]
3=[links]


// 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

See also...