Hilfe

LockedPixels

B+

Aufruf

bank = LockedPixels ( [buffer] )

Parameter

buffer Identität des Buffers


Rückgabewert

Identität einer Bank wird zurückgeliefert


Beschreibung

Die Funktion LockedPixels liefert die Identität einer Bank zurück. Diese Bank repräsentiert den Videospeicher und enthält Pixelinformationen, die mit Peek-/Poke-Befehlen manipuliert werden können. Dazu ist eine vorherige Sperrung des Grafikbuffers mit LockBuffer notwendig.

Direktes Zeichnen mit Poke ist deutlich schneller (bis zu 6x schneller als WritePixelFast). Jedoch muss man Speicherposition und Ausgabewert manuell berechnen. Dies ist nicht so einfach und nur mit Hilfe von LockedFormat, LockedPitch und LockedPixels möglich. Für schnelle Grafikausgabe muss man zudem für jedes Grafikformat eine gesonderte Routine programmieren!


Beispiel

Die erste Funktion zeichnet eine Linie und zweite Funktion berechnet eine Farbe:

Graphics 640, 480, 0, 2
SLineBP(50, 50, 300, 200, 255, 0, 0, BackBuffer())
Flip
WaitKey()
End

Function SLineBP(stx#, sty#, enx#, eny#, r, g, b, Buffer)
   mvx# = Stx - enx:mvy# = sty - eny
   If mvx<0 mvx = - mvx
   If mvy<0 mvy = - mvy
   If mvy>mvx mv# = mvy Else mv# = mvx
   stpx# = (mvx / mv):If Stx>enx stpx = - stpx
   stpy# = (mvy / mv):If Sty>eny stpy = - stpy
   LockBuffer Buffer
   SL_Pitch = LockedPitch(Buffer)
   SL_Bank = LockedPixels(Buffer)
   SL_Mode = LockedFormat(Buffer)
   Col = ConvertRGB(r, g, b, SL_Mode)
   DebugLog Hex(Col)
   If SL_Mode = 1 Or SL_Mode = 2
      For nc = 0 To Floor(mv)
         PokeShort SL_Bank, (Floor(stx) * 2) + (Floor(sty) * SL_Pitch), Col
         stx = stx + stpx:sty = sty + stpy
      Next
   Else
      For nc = 0 To Floor(mv)
         PokeInt SL_Bank, (Floor(sty) * SL_Pitch) + (Floor(stx) * 4), Col
         stx = stx + stpx:sty = sty + stpy
      Next
   EndIf
   UnlockBuffer Buffer
End Function

Function ConvertRGB(r, g, b, Mode = 0)
   Select Mode
      Case 1
         Return ((r / 8) Shl 11) Or ((g / 4) Shl 5) Or (b / 8)
      Case 2
         Return ((r / 8) Shl 10) Or ((g / 8) Shl 5) Or (b / 8)
      Default
         Return (r Shl 16) Or (g Shl 8) Or b
   End Select
End Function


Siehe auch

LockBuffer, LockedFormat, LockedPitch, UnlockBuffer

Übersicht 2D Grafik Pixel