Punkte, Kreise & Geschwindigkeiten
Verfasst: 04.09.2008 19:36
Hallo PB'ler
Ich habe mir vor einer Weile PB zugelegt und verstauben lassen. Nun hab ich mich aber endlich aufgerafft und (mal wieder) mit den Programmieren angefangen. Als Einstieg sollte es was einfaches sein: Ein kleines Sternenfeld das von Rechts nach Links saust. Das klappt auch alles ganz gut, aber mir ist da etwa seltsames aufgefallen:
Codeschnippsel 1
Codeschnippsel 2
Codeschnippsel 3
Der 1. Code ist der schnellste, sind ja auch nur Punkte. Beim 2. wird das ganze etwas träger, logisch hat ja eine ganze Menge Kreise zu Pinseln. Aber der 3. Code geht ja mal gar nicht: Wenn ich Kreis und Punktfunktionen mische, ist die Geschwindigkeit geringer als bei "Kreise-Only"
Meine Frage: Warum? Es sind doch weniger Kreise zu zeichnen?
M.f.G
Captain Qwark
P.S. PureBasic Version ist die 4.0 und das ganze läuft in einem WindowedScreen.
Ich habe mir vor einer Weile PB zugelegt und verstauben lassen. Nun hab ich mich aber endlich aufgerafft und (mal wieder) mit den Programmieren angefangen. Als Einstieg sollte es was einfaches sein: Ein kleines Sternenfeld das von Rechts nach Links saust. Das klappt auch alles ganz gut, aber mir ist da etwa seltsames aufgefallen:
Codeschnippsel 1
Code: Alles auswählen
Procedure StarsDraw()
ClearScreen(RGB(0, 0, 0))
StartDrawing(ScreenOutput())
For myCounterA = 0 To #myStarsQuantity Step 1
Plot(StarsLayerB(myCounterA)\PositionX, StarsLayerB(myCounterA)\PositionY, RGB(100, 100, 100))
Plot(StarsLayerM(myCounterA)\PositionX, StarsLayerM(myCounterA)\PositionY, RGB(150, 150, 150))
Plot(StarsLayerF(myCounterA)\PositionX, StarsLayerF(myCounterA)\PositionY, RGB(200, 200, 200))
Next myCounterA
StopDrawing()
FlipBuffers()
EndProcedure
Code: Alles auswählen
Procedure StarsDraw()
ClearScreen(RGB(0, 0, 0))
StartDrawing(ScreenOutput())
For myCounterA = 0 To #myStarsQuantity Step 1
Circle(StarsLayerB(myCounterA)\PositionX, StarsLayerB(myCounterA)\PositionY, 1, RGB(100, 100, 100))
Circle(StarsLayerM(myCounterA)\PositionX, StarsLayerM(myCounterA)\PositionY, 1, RGB(150, 150, 150))
Circle(StarsLayerF(myCounterA)\PositionX, StarsLayerF(myCounterA)\PositionY, 1, RGB(200, 200, 200))
Next myCounterA
StopDrawing()
FlipBuffers()
EndProcedure
Code: Alles auswählen
Procedure StarsDraw()
ClearScreen(RGB(0, 0, 0))
StartDrawing(ScreenOutput())
For myCounterA = 0 To #myStarsQuantity Step 1
Plot(StarsLayerB(myCounterA)\PositionX, StarsLayerB(myCounterA)\PositionY, RGB(100, 100, 100))
Plot(StarsLayerM(myCounterA)\PositionX, StarsLayerM(myCounterA)\PositionY, RGB(150, 150, 150))
Circle(StarsLayerF(myCounterA)\PositionX, StarsLayerF(myCounterA)\PositionY, 2, RGB(200, 200, 200))
Next myCounterA
StopDrawing()
FlipBuffers()
EndProcedure
Meine Frage: Warum? Es sind doch weniger Kreise zu zeichnen?
M.f.G
Captain Qwark
P.S. PureBasic Version ist die 4.0 und das ganze läuft in einem WindowedScreen.