Leistungsersparnis

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

AcidRain

Betreff: Leistungsersparnis

BeitragMi, Jul 25, 2007 18:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin


Code: [AUSKLAPPEN]
Global nop=100,grrr,laber,speedom#,Wunschfps#=60,fps#,l
Graphics3D 1280,1024,32,1
SetBuffer BackBuffer()

Type Player
Field Cube1,Player,mr#
End Type

Licht =CreateLight()
Global Kamera=CreateCamera()
PositionEntity Kamera,-40,0,0
Global Cube1=CreateSphere(4)
EntityColor Cube1,255,0,0
For g=1 To nop
Create
Next


RotateEntity Kamera,0,-90,0
Collisions 2,2,1,2
HideEntity Cube1

While Not KeyHit(1);------------------------------------------------------------------------------------------------------------------

For u.Player=Each Player
UpdatePlayer( u )
Next

If KeyHit(57) Then Create:nop=nop+1
If KeyDown(200) Then MoveEntity Kamera,0,1*speedom,0
If KeyDown(208) Then MoveEntity Kamera,0,-1*speedom,0
If KeyDown(203) Then MoveEntity Kamera,1*speedom,0,0
If KeyDown(205) Then MoveEntity Kamera,-1*speedom,0,0
If MouseDown(1) Then MoveEntity Kamera,0,0,1*speedom
If MouseDown(2) Then MoveEntity Kamera,0,0,-1*speedom


PointEntity Kamera,Cube1



UpdateWorld
RenderWorld

Text 0,0,fps
Text 0,12,nop
frames=frames+1
If MilliSecs()-render_time=>100 Then fps=frames*10 : frames=0 : render_time=MilliSecs()
speedom=Wunschfps/fps
Flip 0
Wend

End









Function Create.Player()
   u.Player=New Player
   u\Player=CopyEntity(Cube1)
   PositionEntity u\Player,Rnd(-4,4),Rnd(-4,4),Rnd(-4,4)
   EntityAutoFade u\Player,40,60
   EntityType u\Player,2
   Return u
End Function

Function UpdatePlayer( u.Player )
   SeedRnd MilliSecs()
   If u\mr=0 Then u\mr=0.1
   If EntityZ(u\Player) < -24 Then u\mr=0.1+Rnd(-0.09,0.09):EntityColor u\Player,Rnd(0,255),Rnd(0,255),Rnd(0,255):laber=laber+1
   If EntityZ(u\Player) > 24 Then u\mr=-0.1+Rnd(-0.09,0.09):EntityColor u\Player,Rnd(0,255),Rnd(0,255),Rnd(0,255)
   MoveEntity u\Player,0,0,u\mr*speedom
   ;If EntityDistance(u\Player,Kamera)<60 Then
   ;ShowEntity u\Player
   ;Else
   ;HideEntity u\Player
   ;EndIf
End Function


Ich weiß,man soll eigentlich nur das codestück,das den Fehler aufwirft posten,aber so kann man es sich besser vorstellen.
Das Problem:aktiviert man die im oberen Code in der letzten Funktion durch ";" deaktivierten Befehle,dann werden auch im sichtbaren Bereich keine Kollisionen mehr berechnet.Warum?

AcidRain

Silver_Knee

BeitragMi, Jul 25, 2007 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
ohne wirklich näher hinzuschauen

HideEntity u\Player

versteckt nicht nur das entity vom rendern sondern auch von der kollision. wenn weiterhin kollidiert werden soll muss man entityalpha u\player,0 nehmen dann wird es zwar immer noch an die GraKa gesendet aber nicht mehr gerendert

AcidRain

BeitragDo, Jul 26, 2007 11:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja-das weiß ich schon.EntityAlpha ist es schon vom AutoFade-ich versuche die größt mögliche Leistungsersparnis rauszuholen,das sind bei mir mit hideentitty (wenn man auf eine Entfernung geht,bei der nichts mehr sichtbar ist )1000 fps Unterschied (hört sich übertrieben an,ist es aber nicht).
wenn man dann aber wieder showentity eingibt,dann hat man immernoch keine Kollision.
am besten ihr ladet den Code und testet es,ich kann das nicht so gut erklären. Crying or Very sad

AcidRain

°EDIT

Lösung gefunden! es lag an der Reihenfolge im Code,die in ; gesetzten Befehle müssen ganz am Anfang in der Funktion stehen...

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group