Bildengine gebastelt, welche aber aufgrund von zu langsamer WritePixelFast-
Plottung leider in die Hose gegangen ist... Und da das System eigentlich recht
schnell und gut war, dachte ich mir, portieren wie mal die extrahierte Plot-
Routine nach PB und stellen sie hier aus. Ich hatte damals (ja, ist schon etwas
länger her seit der Portierung) das ganze in der Demo unter 16 bit Farbtiefe
getestet, hat eigentlich ganz nett ausgesehen. Naja, hier ist die Procedure
dazu:
Code: Alles auswählen
;Putpixel - plots a translucid pixel
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;Ich weiss nicht genau, wie PutPixel
;in höheren Farbtiefen läuft, müsste
;aber im Prinzip relativ fehlerfrei
;laufen. Benutzung auf eigene Gefahr ;]
;
;best viewed in jaPBe
#ScreenWidth=640
#ScreenHeight=480
Procedure PutPixel(x.w,y.w, ired.w,igre.w,iblu.w, t.f)
If x.w>=0 And y.w>=0 And x.w<#ScreenWidth And y.w<#ScreenHeight
ocol.l = Point(x.w,y.w)
ored.w = Red(ocol.l)
ogre.w = Green(ocol.l)
oblu.w = Blue(ocol.l)
If ored.w<ired.w
fred.w = ored.w + ( Abs(ored.w - ired.w) * t.f )
ElseIf ored.w>ired.w
fred.w = ired.w + ( Abs(ored.w - ired.w) * t.f )
ElseIf ored.w=ired.w
fred.w=ored.w
EndIf
If ogre.w<igre.w
fgre.w = ogre.w + ( Abs(ogre.w - igre.w) * t.f )
ElseIf ogre.w>igre.w
fgre.w = igre.w + ( Abs(ogre.w - igre.w) * t.f )
ElseIf ogre.w=igre.w
fgre.w=ogre.w
EndIf
If oblu.w<iblu.w
fblu.w = oblu.w + ( Abs(oblu.w - iblu.w) * t.f )
ElseIf oblu.w>iblu.w
fblu.w = iblu.w + ( Abs(oblu.w - iblu.w) * t.f )
ElseIf oblu.w=iblu.w
fblu.w=oblu.w
EndIf
Plot(x.w, y.w, RGB(fred.w,fgre.w,fblu.w))
EndIf
EndProcedure
handhabt, aber in BB funktionierte das durchscheinde Plot prima.
Noch etwas zu der Transparenz: 0 (unsichtbar) bis 1 (rübergelegt).
Alles dazwischen ist entsprechend durchscheinend.