WRITEPIXELFAST X, Y, Rgb [,Buffer]


Beschreibungv1.40
Diese Anweisung zeichnet einen Punkt an der X/Y-Koordinate ein. Für die Ausgabe wird immer der aktuelle Buffer verwendet. Mit der Buffer-Option kann die Grafikausgabe auf einem anderen Buffer erfolgen (siehe BACKBUFFER, FRONTBUFFER und IMAGEBUFFER).

Um die Geschwindigkeit zu erhöhen sollte LOCKBUFFER verwendet werden. Dadurch wird der Buffer für andere Befehle gesperrt und die Fehlerprüfung deaktiviert.

Benutze READPIXEL oder READPIXELFAST, um die Farbe eines Pixels zu ermitteln.

Der mit READPIXEL ermittelte Farbcode wird sofort an eine Variable übergeben. Dieser Farbcode kann nicht mit der COLOR-Anweisung gesetzt werden, sondern kann nur ausgerechnet werden (siehe Zusatzinformationen).

WRITEPIXEL kann genau wie WRITEPIXELFAST verwendet werden. Es ist nur etwas langsamer. Die Deaktivierung des Debuggers bringt eine enorme Geschwindigkeitssteigerung. WRITEPIXELFAST ist die schnellste Variante (bis zu 2000% schneller als PLOT).


Parameter
X=X-Koordinate
Y=Y-Koordinate
Rgb=Farbcode mir Rot-, Grün- und Blauanteilen
Buffer=Grafikbuffer, wohin der Punkt eingezeichnet werden soll


Rückgabewert
-


Zusatzinformationen
So wird ein Farbcode abgespeichert:

Es wird ein Integerwert übergeben. Ein Integerwert besteht aus 4 Byte. Das erste Byte (von rechts!) gibt den Blauanteil einer Farbe wieder, das zweite Byte den Grünanteil und das dritte Byte den Rotanteil. Die Farbanteile sind Werte im Bereich von 0-255. Das vierte Byte gibt den Alpha-Wert wieder. Alpha ist ein Transparenzwert, der erst ab Blitz3D voll verfügbar sein wird. Es sind Werte zwischen 0 (transparent) bis 255 (normal) möglich. Blitz2D kann keine Transparenz darstellen, somit hat es den Wert 255. Bis V1.53 gab es keinen Alphawert.

FFFFFFFF - Farbcode in einem Integerwert

Blauanteil 0-255 (0h-FFh)
Grünanteil 0-255 (0h-FFh)
Rotanteil 0-255 (0h-FFh)
Beinhaltet ab V1.53 Alpha-Information 255 (FFh)
Erst ab Blitz3D ist Alpha voll verfügbar!!!

Berechnung der Farbanteile aus einem Farbcode:
a=(rgb AND $FF000000)/$1000000
r=(rgb AND $FF0000)/$10000
g=(rgb AND $FF00)/$100
b=rgb AND $FF


Berechnung des Farbcodes aus den Farbanteilen:
rgb=a*$1000000 + r*$10000 + g*$100 + b

Berechnung der Farbwerte ohne Alpha:
rgb2=rgb AND $FFFFFF


Beispiel
Dieses Beispiel zeichnet vorbeifliegende Sterne. Es ist sehr schnell - wegen WRITEPIXELFAST:

GRAPHICS 640,480,0,1
SETBUFFER BACKBUFFER()
DIM X(299), Y#(299), V#(299)
FOR i=0 TO 299
   X (i)=RND(0,639)
   Y#(i)=RND(0,479)
   V#(i)=RND(1,5)
NEXT
COLOR 0,0,0
WHILE KEYHIT(1)=0
   RECT 0,0,640,480
   LOCKBUFFER BACKBUFFER()
   FOR i=0 TO 299
      Y#(i)=Y#(i)+V#(i)
      IF Y#(i)>479 THEN X(i)=RAND(0,639):Y#(i)=Y#(i)-480:V#(i)=RND(1,5)
      Grau=INT(v#(i))*50
      Farbe=Grau*$10000+Grau*$100+Grau
      WRITEPIXELFAST x(i),y#(i),Farbe
   NEXT
   UNLOCKBUFFER BACKBUFFER()
   FLIP
WEND
END


Siehe auch
COPYPIXEL, COPYPIXELFAST, GETCOLOR, PLOT, READPIXEL, READPIXELFAST, WRITEPIXEL