GLBasic Benutzerhandbuch

Main sections

ALPHATESTING

ALPHATESTING grth#



Wenn der Alpha-Wert (Farbstärke bei transparenten Pixeln) größer als der Wert grth# ist, wird der Pixel berücksichtigt. Andernfalls wird er als Loch ausgelassen. Das gilt für 2D und 3D.

Mit ALPHATESTING 1.0 kann man Alpha-Testing ausschalten.

Das wirkt sich besonders auf Mobilen Geräten stark beschleunigend aus. Jedoch werden nun alle transparenten Pixel gezeichnet. Mit ALPHAMODE -1 kann man die Transparenten Pixel jedoch "durchsichtig" zeichnen, so dass im 2D keine Unterschiede entstehen. Achtung: Bei gedrehten Objekten kann es mit SMOOTHSHADING TRUE ohne Alpha-Testing zu Rändern kommen. Für diesen Fall wird grth# von ca 0.5 empfohlen.

GLBasic V11 und höher setzen als Default die Werte ALPHATESTING 1.0; ALPHAMODE -1.

// Sprite with hole
SETTRANSPARENCY RGB(255,0,128)
DRAWRECT 0,0,500,500,RGB(255,0,128)


ALPHAMODE -0.1
DRAWRECT 0,0,500,500,RGB(255,0,0)
ALPHAMODE 0
DRAWRECT 0,0,29,29,RGB(255,255,255)
DRAWRECT 1,1,27,27,RGB(0,0,255)

DRAWRECT 5,5,8,8,RGB(255,0,128) // hole
GRABSPRITE 0, 0,0, 32,32

// blue background
CLEARSCREEN RGB(80,200,200)


WHILE TRUE
    SMOOTHSHADING TRUE
    LOCAL phi = GETTIMERALL() / 30
    FOR i% = 0 TO 3
        x =100 + i*150

        SELECT i
            CASE 0 // linear interpolation of pixels
                SMOOTHSHADING FALSE
                ALPHAMODE -1.0
            CASE 1 // blury edges (default)
                SMOOTHSHADING TRUE
                ALPHATESTING 0.05
                ALPHAMODE -1.0
            CASE 2 // sharp edges
                SMOOTHSHADING TRUE
                ALPHATESTING 0.99
                ALPHAMODE -1.0
            CASE 3 // no transparency
                ALPHAMODE 0
                SMOOTHSHADING TRUE
                ALPHATESTING 1.0
        ENDSELECT

        ROTOZOOMSPRITE 0, x,100,phi, 3.5
    NEXT

    SHOWSCREEN
WEND

See also...