Leistungsersparnis
Übersicht

![]() |
AcidRainBetreff: Leistungsersparnis |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. ![]() 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... |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group