Mauscursor und Bildschirm immer wieder neu malen?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Backbuffer

Betreff: Mauscursor und Bildschirm immer wieder neu malen?

BeitragMi, Jun 06, 2007 1:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich habe einen kleinen Map-Editor geschrieben und der funktioniert sogar Very Happy . Nun, kaum etwas zu Stande gebracht wollte ich mein Programmcode verbessern.

Also mein Problem:
Bis jetzt male ich immer den kompletten Bildschirm in einer Schleife neu um den alten Mauscursor zu löschen. Gibt es eine Befehl mit dem ich einen Auschnitt des akutellen Bildschirm speichern kann? Dann müsste ich immer nur diesen Schnipsel wieder Laden.

Danke für die Hilfe

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Jun 06, 2007 1:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Zeiten sind schon längst vorbei, wo man nur Bildteile gezeichnet hat (dann auch noch mit XOR-Befehlen usw.).

''Richtig ist'':

- Nach Flip kommt Cls (solange es 2D ist)
- Der Bildschirm wird jeden Schleifendurchlauf neu gezeichnet
- Bei einer Tilemap darauf achten, dass nur der sichtbare Bereich gezeichnet wird. Nicht die gesamte Map
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Backbuffer

BeitragMi, Jun 06, 2007 1:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun, so habe ich es im aktuellen Programm von mir gemacht. Dachte aber, es würde zu einer besseren Performance führen, wenn man wirklich nur den nötigen Teil malt.
Hab' zwar mit meinem Miniprogramm noch keine Speed Problem, aber man weiß ja nie was noch kommt. Very Happy

D2006

Administrator

BeitragMi, Jun 06, 2007 2:16
Antworten mit Zitat
Benutzer-Profile anzeigen
allein das Speichern des Teils der erhalten bleibt, benötigt erheblich mehr Performance, als ein neuzeichnen.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2
 

Backbuffer

BeitragMi, Jun 06, 2007 2:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Na dann hab' ich ja ein Problem weniger.
Danke

Smily

BeitragMi, Jun 06, 2007 11:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine möglichkeit wäre es mit viewport zu arbeiten:

Um mit viewport zu arbeiten einfach die vier auskommentieren zeilen einkommentieren.
Bei mir gibt das ca eine dreifache performancesteigerung (Die man aber imho sowiso net braucht, da man bei kleineren spielen wahrscheinlich nichtmal die geringere performance voll ausnutzt)
Code: [AUSKLAPPEN]
Graphics 800,600,16,2
backimg = CreateImage(800,600)
SeedRnd(millisecs())
SetBuffer ImageBuffer(backimg)
For z = 1 To 1000
   x1 = Rand(0,800)
   x2 = Rand(x1, x1+100)
   y1 = Rand(0,600)
   y2 = Rand(y1,y1+100)
   Color Rand(0,255), Rand(0,255), Rand(0,255)
   a = Rand(0,2)
   Select a
   Case 0
      Line x1,y1,x2,y2
   Case 1
      Rect x1,y1,x2-x1,y2-y1, Rand(1)
   Case 2
      Oval x1,y1,x2-x1,y2-y1, Rand(1)
   Case 3
   End Select
Next
Color 0,0,0
Rect 0,0,100,20,1
Color 255,255,255
Rect 0,0,100,20,0

mouseimg = CreateImage(25,25)
SetBuffer ImageBuffer(mouseimg)
Color 1,1,1
Oval 0,0,25,25,1
Color 255,255,255
Oval 0,0,25,25,0
Line 12,0,12,25
Line 0,12,25,12
MidHandle mouseimg
SetBuffer BackBuffer()
HidePointer()
DrawImage backimg,0,0
Repeat
;   Viewport MX - 40, MY - 40, 80, 80
   mx = MouseX()
   my = MouseY()   
   Cls
   DrawImage backimg,0,0
;   Viewport MX - 40, MY - 40, 80, 80   
   DrawImage mouseimg,mx,my
   c = c + 1
   If MilliSecs() => checkfpstime
      fps = c
      c = 0
      checkfpstime = MilliSecs() + 1000
   End If
;   Viewport 1,1,98,18
;   Cls
   Text 2,10, "FPS: " + fps, 0, 1
   Flip 0
Until KeyHit(1)
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

Rongo Matane

BeitragMi, Jun 06, 2007 17:31
Antworten mit Zitat
Benutzer-Profile anzeigen
das is aber schon ne gigantische Leistungssteigerung...aber ich frag mich wie es aussieht wenn man ein großes Programme hat, wo sich viel auf dem Bildschirm ändert...

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group