Extremer Leistungseinbruch -> wieso? :-( [gelöst]
Übersicht

![]() |
satzzeichenBetreff: Extremer Leistungseinbruch -> wieso? :-( [gelöst] |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hoi,
also ich hab mir gerade die Blitz3D Demo gesaugt und wollte damit mal ein wenig basteln. Also habe ich einfach mal ein paar Beispiele aus der Dokumentation umgesetzt. Ein Terrain mit "TerrainDetail terrain,2000,True" und darauf 10 einfache Meshes platziert (ein mal eingeladen und dann 9 mal CopyEntity). Nun erlebt meine kleine Welt einen erheblichen Performance Einbruch sobald ich mit der Kamera über die Stelle mit den 10 Meshes gehe ![]() Ich hoffe ihr könnt mir helfen und mir sagen wie ich solche Leistungsabstürze vermeiden kann. Ich habe es auch schon per Fullscreen statt Window und ohne Debuger bzw. Morphing (für Terrain) probiert - es wurde zwar jeweils ein Stückchen besser aber nur marginal ![]() Danke für eure Hilfe schon im Vorraus, gratz satzzeichen PS: Hier der Code, das sagt bestimmt mehr als 1000 Worte... Code: [AUSKLAPPEN] Graphics3D 640,480
SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,0,10,0 TurnEntity camera,90,0,0 light=CreateLight() RotateEntity light,90,0,0 ; Create terrain ;terrain=CreateTerrain(128) terrain=LoadTerrain( "height_map.bmp" ) TerrainDetail terrain,2000,True ScaleEntity terrain,0.2,3,0.2 ; Texture terrain grass_tex=LoadTexture( "mossyground.bmp" ) ScaleTexture grass_tex,75,75 EntityTexture terrain,grass_tex While Not KeyDown( 1 ) If KeyDown( 208)=True Then MoveEntity camera,0,-0.5 ,0 If KeyDown( 200)=True Then MoveEntity camera,0,0.5 ,0 If KeyDown( 74 )=True Then MoveEntity camera,0,0,-0.5 If KeyDown( 78)=True Then MoveEntity camera,0,0,0.5 If KeyDown( 203 )=True Then MoveEntity camera,-0.5,0,0 If KeyDown( 205 )=True Then MoveEntity camera,0.5,0,0 If EntityX(camera) < 1 PositionEntity camera,1,EntityY(camera),EntityZ(camera) EndIf If EntityX(camera) > 50 PositionEntity camera,50,EntityY(camera),EntityZ(camera) EndIf If EntityY(camera) < 10 PositionEntity camera,EntityX(camera),10,EntityZ(camera) EndIf If EntityY(camera) > 50 PositionEntity camera,EntityX(camera),50,EntityZ(camera) EndIf If EntityZ(camera) < 1 PositionEntity camera,EntityX(camera),EntityY(camera),1 EndIf If EntityZ(camera) > 50 PositionEntity camera,EntityX(camera),EntityY(camera),50 EndIf ; Load mesh gargoyle=LoadMesh("oildrum.3ds") ;PositionEntity gargoyle,5,1,20 ScaleEntity gargoyle,0.015,0.015,0.015 For z=0 To 10 Step 1 newgarg=CopyEntity(gargoyle) PositionEntity newgarg,5+(z*1),5,20 Next RenderWorld Text 0,0,"Use cursor keys to move about the terrain" Flip Wend End |
||
Der erhabene Geist schafft am meisten, wenn er am wenigsten arbeitet. Leonardo da Vinci |
- Zuletzt bearbeitet von satzzeichen am Sa, Sep 01, 2007 16:40, insgesamt einmal bearbeitet
![]() |
tft |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi
For z=0 To 10 Step 1 newgarg=CopyEntity(gargoyle) PositionEntity newgarg,5+(z*1),5,20 Next das in die Hauptschleife zu parken ist technischcer selbstmord. Du erzeugst bei jedem Frame neu objekte.... das muss einmal an den anfang. Gruss TFT Edit : Lass das Step weg . Das ist nicht nötig. Edit : und das Z*1 ändere am besten in z, und dann weg mit den klammern. Es gibt keine doofen Fragen... nur doofe antworten. Fiel spass noch. |
||
TFT
https://www.sourcemagic.ch Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!! |
- Zuletzt bearbeitet von tft am Sa, Sep 01, 2007 16:01, insgesamt 2-mal bearbeitet
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du benutzt CopyEntity in der While/Wend-Schleife. Das heisst, bei jedem Schleifendurchlauf werden 10 neue Meshes produziert. Da kommen schnell ein paar tausend Stück zusammen.
Platziere also einfach die For/Next-Schleife vor der Hauptschleife. |
||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
![]() |
satzzeichen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oh lol ![]() |
||
Der erhabene Geist schafft am meisten, wenn er am wenigsten arbeitet. Leonardo da Vinci |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group