Der Code den ich gerade verwende:
Code: Alles auswählen
; Code von Max 'Kekskiller' Beutling
Global dbuffer.l, dbpitch.l, dbformat.l, dbbytes.l
Procedure GetBuffer() ;wechselt den screenmemorybuffer auf den aktuellen startdrawing-output
dbuffer = DrawingBuffer()
dbpitch = DrawingBufferPitch()
dbformat = DrawingBufferPixelFormat()
If dbformat = #PB_PixelFormat_16Bits
dbbytes = 2
ElseIf dbformat = #PB_PixelFormat_32Bits_BGR Or dbformat = #PB_PixelFormat_32Bits_RGB
dbbytes = 4
EndIf
EndProcedure
Procedure Rect32(x1.l, y1.l, x2.l, y2.l, c.l)
Protected db.l, db2.l
Protected w.l, h.l
Protected county.l
Protected countx.l
If x1 > x2
Swap x2, x1
EndIf
If y1 > y2
Swap y2, y1
EndIf
db = dbuffer + y1 * dbpitch + x1 * dbbytes
For county = y1 To y2
db2 = db
For countx = x1 To x2
PokeL(db2, c)
db2 + dbbytes
Next
db + dbpitch
Next
EndProcedure
Das ist eigentlich auch der Hauptgrund, denn ich will KEINE PB-internen Special Effects, Sprites oder 3D-Sprites benutzen. Ich bin nicht sehr begabt in Assembler, obwohl das vielleicht einen kleinen Speedschub geben würde.
Das Hauptproblem sind die vielen Pixel. Das Probleme mit mehreren Schleifen zu lösen ist wesentlich schneller als mit einer einzigen, da hier noch Abfragen für "Zeilenumbruch" gemacht werden müssen.
Was kann ich an meinem Code noch machen?