Grafikausgabe mit Banks

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

CodeMaster

Betreff: Grafikausgabe mit Banks

BeitragFr, Jun 10, 2005 23:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Jeder Pixel ist in einer Bank gespeichert und kann daher sehr leicht
manipuliert werden (Blur-Effekt etc.). Mehr als ne Spielerei ist es
allerdings nicht.BlitzBasic: [AUSKLAPPEN]
Graphics 320,240,32,2
SetBuffer BackBuffer()

Global bank = CreateBank(320*240*4)

While Not KeyDown(1)
BankCircle(MouseX(),MouseY(),7,$FF0000)
w = (w + 5) Mod 360
For i = 1 To 360 Step 60
BankCircle(MouseX()+Cos(i+w)*12,MouseY()+Sin(i+w)*12,5,$FF0000)
Next
If r > 240 Then rp = -1
If r < 15 Then rp = 1
If g > 240 Then gp = -1
If g < 15 Then gp = 1
If b > 240 Then bp = -1
If b < 15 Then bp = 1
r = r + Rand(2) * rp
g = g + Rand(4) * gp
b = b + Rand(6) * bp
BlurBank(r,g,b,0.95)
Update
Wend
End

Function BlurBank(r,g,b,factor#=0.85,dirx=0,diry=0)
For x = 319 To 0 Step -1
For y = -1 To 237
rgb = Get(x,y)
rb# = (rgb And $FF0000) / $10000 * factor + r * (1 - factor)
gb# = (rgb And $FF00) / $100 * factor + g * (1 - factor)
bb# = (rgb And $FF) * factor + b * (1 - factor)
PokeInt(bank,(x+1)*4+(y+1)*320*4,Int(rb) * $10000 + Int(gb) * $100 + Int(bb))
Next
Next
End Function

Function ClsBank(col=0)
For x = 0 To 319
For y = 0 To 239
PokeInt(bank,x*4+y*320*4,col)
Next
Next
End Function

Function BankCircle(x,y,size,col)
For w = 0 To 359
tx = x + Cos(w) * size
ty = y + Sin(w) * size
If (tx < 320) And (ty < 240) And (tx >= 0) And (ty >= 0) Then PokeInt(bank,tx*4+ty*320*4,col)
Next
End Function

Function Update()
LockBuffer()
For x = 0 To 319
For y = 0 To 239
WritePixelFast(x,y,PeekInt(bank,x*4+y*320*4))
Next
Next
UnlockBuffer()
Flip False
End Function

Function Set(x,y,value) ; <-- sehr langsam
If (x < 320) And (y < 240) And (x >= 0) And (y >= 0) Then PokeInt(bank,x*4+y*320*4,value)
End Function

Function Get(x,y) ; <-- sehr langsam
If (x < 320) And (y < 240) And (x >= 0) And (y >= 0) Then
Return PeekInt(bank,x*4+y*320*4)
Else
Return 0
EndIf
End Function



[edit] Schaltet den Debugger aus, ohne läufts bei mir flüssig wie Butter
(ausm Gefühl her etwa 60 FPS).
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.

Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group