Funken zu langsam

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Bigfreddy

Betreff: Funken zu langsam

BeitragMo, Mai 02, 2005 21:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier mein Quellcode:


BlitzBasic: [AUSKLAPPEN]
Graphics 800,600,16,1
SeedRnd MilliSecs()
SetBuffer BackBuffer()
HidePointer
Const anzahl=20

Type Obj
Field x,y
Field r,g,b,Farbe
Field start,dauer
Field richtungx,richtungy
End Type

Global Funke.obj,farbe

For h=1 To anzahl
Createfunken()
Next


While Not KeyHit(1)
Cls

Updatefunken()

Flip
Wend
End

Function Updatefunken()
For Funke=Each obj
funke\x=funke\x+funke\richtungx
funke\y=funke\y+funke\richtungy

If funke\start+funke\dauer<MilliSecs() Then
Delete Funke
createfunken()
EndIf

LockBuffer BackBuffer()
farbe=$FF000000+funke\r*$10000+funke\g*$100+funke\b
If funke\x>0 And funke\X<800 And funke\Y>0 And funke\Y<600 Then WritePixelFast funke\x,funke\y,Farbe
UnlockBuffer BackBuffer()

Next
End Function

Function Createfunken()
funke=New obj
funke\x=MouseX()
funke\y=MouseY()
funke\r=Rnd(0,255)
funke\g=Rnd(0,255)
funke\b=Rnd(0,255)
funke\start=MilliSecs()
funke\dauer=Rand(100,5000)
Repeat
funke\richtungx=Rand(-1,1)
funke\richtungy=Rand(-1,1)
Until (funke\richtungy<>0)Or(funke\richtungx<>0)
End Function


Des ist sowas von langsam...
Kann man dagegen etwas tun?
(ich hab noch nie mit writepixelfast gearbeitet)
 

hitokiri

BeitragMo, Mai 02, 2005 22:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich zwar auch noch nicht und dies ist ein unqualifizierter beitrag und nur eine vermutung, aber wenn du vielleicht nicht 20 mal den buffer lockst und wieder freigibst ?
 

Dreamora

BeitragMo, Mai 02, 2005 22:15
Antworten mit Zitat
Benutzer-Profile anzeigen
War net unqualifiziert, sondern trifft das Problem genau auf den Punkt: LockBuffer muss VOR / NACH die Schleife.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

hitokiri

BeitragMo, Mai 02, 2005 22:17
Antworten mit Zitat
Benutzer-Profile anzeigen
yippie !

Devils Child

BeitragDo, Mai 05, 2005 18:18
Antworten mit Zitat
Benutzer-Profile anzeigen
probier mal diesen code:

Code: [AUSKLAPPEN]

Graphics 640, 480, 32, 2
SetBuffer BackBuffer()

Dim x(100), y(100), y1#(100)
pos = 0

Gosub clear

While Not KeyHit(1)
  Cls
  Color Rnd(200, 255), Rnd(200, 255), 0

  pos = pos + 5   ;5 verändern-> anzahl der funken
  If pos > 100 Then
    pos = 1
    Gosub clear
  EndIf

  For i = 1 To pos
    a = Rand(-10, 100): a = a / 10
    b = Rand(-100, 100): b = b / 10
    y1#(i) = y1#(i) + a
    x(i) = x(i) + b
    y(i) = y(i) + y1#(i)
    Plot x(i), y(i)
  Next
  Flip
Wend
End

.clear
For i = 1 To 100
  x(i) = GraphicsWidth() / 2
  y(i) = GraphicsHeight() / 2
  y1#(i) = 0
Next
Return

diGGa

GruppenKaspar

BeitragDo, Mai 05, 2005 18:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Dreamora hat Folgendes geschrieben:
War net unqualifiziert, sondern trifft das Problem genau auf den Punkt: LockBuffer muss VOR / NACH die Schleife.


doofe frage: wenn du das davor/hinter machst, dann wird es doch nichtmehr ausgeführt? bzw nur 1x und alles in der schleife wird gesperrt^^
Gestern Nacht Schlug der Regen an mein Fenster
Ich ging durch das dunkle Zimmer und
glaubte im Licht der Straßenlampe
Den Geist unseres jahrhunderts auf der
Straße zu sehen
Der uns sagte, daß wir alle am Rande
des Abgrunds stehen.
- Al Steward


Athlon 64 3000+ / Radeon 9600 / 1024mb ddram

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group