Hmm, stürzt ab...
Falsch. Mit CopyMemory kannst du jeden Speicher kopieren, der zu deinem Prozess gehört. Also auch den DrawingBuffer.
..........????
Mit "Button test1" wird in den Buffer geschrieben.
Bei "Button test2" sollen die Pixel an Ende der ersten Pixel dran gehängt werden mit CopyMemory und da steigt das Programm aus, auch wenn ich nur 4 Byte kopiere, mit der Einbettung ins Startdrawing stürzt es auch ab.
Danke.
Gruss
peter
Code: Alles auswählen
Global buffer.l,buffer1.l,buffer2.l,x.l
Declare eins()
Declare zwei()
Enumeration
#Window_0
#button_1
#button_2
EndEnumeration
InitSprite()
InitKeyboard()
OpenWindow(#Window_0,0,0,600,600,"test",#PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(#Window_0), 10, 10, 512,512)
ButtonGadget(#button_1, 10,550, 80, 25, "test1")
ButtonGadget(#button_2, 100,550, 80, 25, "test2")
StartDrawing(ScreenOutput())
Buffer = DrawingBuffer()
;Pitch = DrawingBufferPitch()
;PixelFormat = DrawingBufferPixelFormat()
buffer1=buffer
StopDrawing()
ClearScreen(RGB(0,0,0))
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_Gadget
EventGadget = EventGadget()
EventType = EventType()
If EventGadget = #Button_1
eins()
EndIf
If EventGadget = #Button_2
zwei()
EndIf
Case #PB_Event_CloseWindow
EventWindow = EventWindow()
If EventWindow = #Window_0
CloseWindow(#Window_0)
Break
EndIf
EndSelect
FlipBuffers()
ForEver
Procedure eins()
buffer=buffer1
For x = 1 To 16384
PokeL(buffer,$ffffff)
buffer=buffer+4
Next
EndProcedure
Procedure zwei()
buffer=buffer1
CopyMemory(*buffer1,*buffer+16384,16384)
EndProcedure