Seite 1 von 1
Einfacher Farbverlauf bremst System voll aus
Verfasst: 11.05.2005 00:27
von Delle
Hallo,
Screen ist 1024x768x32, ein paar Sprites fliegen rum.
Komischerweise bremst ein simpler Farbverlauf alles gleich aus:
Code: Alles auswählen
StartDrawing(ScreenOutput())
For i=0 To 254:Line(0,i,1023,0,RGB(i,i,i)):Next
StopDrawing()
Kann man dagegen was tun? Habe schon versucht den Farbverlauf
als Sprite zu plazieren aber es ruckelt immer noch...
Wieviel MHz braucht man denn damit ein Spiel in 1024x768x32
mit einigen Sprites ruckelfrei abläuft?
Danke,
Delle
Verfasst: 11.05.2005 07:53
von Lebostein
Sobald man ein StartDrawing() ... StopDrawing() in seinem Code stehen hat, wird das Programm lahm. Es braucht noch nicht einmal was zwischen den beiden Befehlen zu stehen, siehe hier:
http://forums.purebasic.com/german/view ... c&start=10
Und wenn man dann noch die extrem langsamen 2DDrawing Befehle benutzt (Line, Box usw.) und das vielleicht in jedem Schleifendurchlauf hundertfach, dann ist es kein Wunder, dass jeder noch so gute Rechner in die Knie geht.
Meine Empfehlung: Lieber nicht die 2DDrawing-Befehle verwenden, wenn man ein schnelles Spiel schreiben will! Man kann dies mit der nötigen Kenntnis auch über DirectX lösen:
http://forums.purebasic.com/german/viewtopic.php?t=3121
Das ist tausendmal schneller...
Verfasst: 11.05.2005 08:06
von Lebostein
Oder einfach vorher ein Sprite generieren (außerhalb der Hauptschleife), wenn sich die Farben im Spiel nicht ändern sollen:
Code: Alles auswählen
InitMouse()
InitKeyboard()
InitSprite()
#SPR_Verlauf = 99
OpenScreen(1024, 768, 32, "VERLAUF")
CreateSprite(#SPR_Verlauf, 1024, 255)
StartDrawing(SpriteOutput(#SPR_Verlauf))
For i=0 To 254:Line(0,i,1024,0,RGB(i,i,i)):Next
StopDrawing()
Repeat
ExamineMouse()
ExamineKeyboard()
ClearScreen(255,255,255)
DisplaySprite(#SPR_Verlauf, MouseX(), MouseY())
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
Verfasst: 11.05.2005 11:27
von Delle
Oder einfach vorher ein Sprite generieren (außerhalb der Hauptschleife), wenn sich die Farben im Spiel nicht ändern sollen:
Die Idee hatte ich auch schon (siehe Startposting), hat aber im
Endergebnis keinen Unterschied gemacht.
Die DirectBefehle sehen gut aus, schmiert bei mir leider ab.
Da muss wohl doch mal ne neue Grafikkarte her...[/code]
Verfasst: 11.05.2005 11:50
von Lebostein
Hm... eigentlich sollten diese Befehle ab DirectX7 funktionieren. Wenn, dann müsste eher ne ältere Grafikkarte her. Aber eigentlich ist das ja alles abwärtskombatibel... frag mal den Stefan Möbius, der hat diese Routinen geschrieben
Verfasst: 11.05.2005 12:13
von Delle
Hab generell Probleme mit Init3D()-Sachen, von daher wird es nicht an seinem Code liegen.