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