Seite 2 von 2

Verfasst: 22.11.2008 17:04
von mpz
Hi,

Ich habe jetzt auch eine Partikelengine in meine MP_3D Engine integriert. Genug Parameter hat es wie:

Wind, Gravitation, Richtung, Bewegung, Drehung, Anzahl der Partikel, Grösse, Stärke, Textur ändern etc... allerdings im 3D Raum. Ein kleines Beispiel liegt als EXE dabei und der Sourcecode auch...

Weiss jemand warum die Partikeldemo von Ogre (findet man PureBasic\Examples\Sources\Particle.pb) 50% der CPU Zeit kostet?

Gruß Michael

http://rapidshare.de/files/40968593/MP_ ... o.exe.html

Code: Alles auswählen


;////////////////////////////////////////////////////////////////
;//
;// Project Title: MP 3D Engine
;// File Title: MP_DX9_Partikel.pb
;// Created On: 22.11.2008
;// Updated On: 
;// Author: Michael Paulwitz
;// OS:Windows
;// 
;// Demofile für meine Partikelengine
;// 
;////////////////////////////////////////////////////////////////

;-
;- ProgrammStart


MP_Graphics3D (640,480,0,3) ; Erstelle ein WindowsFenster #Window = 0
SetWindowTitle(0, "3D Partikel Test") ; So soll es heissen

Particle.l = MP_CreateParticleEmitter() ; Fontaine mit Wind
MP_PositionEntity (Particle,3,0,0) ; Setzt ein Objekt an einen x,y,z Ort
MP_ParticleColorRange (Particle,RGB(255,255,255),RGB(255,255,255)) ; Farbe von RGB Wert zu RGB Wert
MP_ParticleEmissionRate (Particle,500,5,0.05); Maximale Partikel, Ausstoßmenge und Zeiteinheit in s dafür
MP_ParticleTimeToLive(Particle, 3, 6); Partikellebenszeit von s bis s
MP_ParticleSize (Particle,0.5); Partikelgrösse
MP_ParticleVelocity(Particle,0,5,0,1.5); Ausstossrichtung als x,y,z und Verteilungsstärke
MP_ParticleWind(Particle, 2, 0 ,0); Wind als x,y,z    

Particle2.l = MP_CreateParticleEmitter() ; Explosion
MP_ParticleColorRange (Particle2,RGB(0,0,0),RGB(255,0,0)) ; Farbe von RGB Wert zu RGB Wert
MP_ParticleEmissionRate (Particle2,100,100,0.05);  Maximale Partikel, Ausstoßmenge und Zeiteinheit in s dafür
MP_ParticleTimeToLive(Particle2, 0.4, 0.6); Partikellebenszeit von s bis s
MP_ParticleSize (Particle2,2); Partikelgrösse
MP_ParticleVelocity(Particle2,0,0,0,10); Ausstossrichtung als x,y,z und Verteilungsstärke
  
Particle3.l = MP_CreateParticleEmitter() ;Vulkan aus MPs
MP_PositionEntity (Particle3,-5,0,0) ; Setzt ein Objekt an einen x,y,z Ort
MP_ParticleColorRange (Particle3,RGB(0,0,0),RGB(255,255,255)) ; Farbe von RGB Wert zu RGB Wert
MP_ParticleEmissionRate (Particle3,100,10,0.05);  Maximale Partikel, Ausstoßmenge und Zeiteinheit in s dafür
MP_ParticleTimeToLive(Particle3, 3, 4); Partikellebenszeit von s bis s
MP_ParticleVelocity(Particle3,0,5,0,2.5); Ausstossrichtung als x,y,z und Verteilungsstärke
MP_ParticleGravity(Particle3,0,-5,0) ; Gravitatio als x,y,z    

Textur = MP_CreateTextureFromFileInMemory (?logostart,?logostart-?logostop)
MP_EntityTexture(Particle3,Textur)

camera=MP_CreateCamera() ; Kamera erstellen

x.f=0 : y.f=0 : z.f = -18 
MP_PositionCamera(camera,x.f,y.f,z.f) ; Kameraposition 

light=MP_CreateLight(1,90,0,0) ; Es werde Licht

cube=MP_CreateCube() ; Nen Würfel

MP_EntityColor (cube,100,100,255) ; Würfel färben als R,G,B Wert

While Not MP_KeyDown(#PB_Key_Escape) And Not MP_WindowEvent() = #PB_Event_CloseWindow; Esc abfrage oder schliessen
    
    MP_DrawText (10,10,RGB(255,255,255),"Läuft mit "+Str(MP_FPS ())+" FPS") ; Textanzeige an Position x,y, Farbe RGB und Text$
    MP_TurnEntity (cube,0.05,0.5,1) ; Würfel Drehen
    MP_RenderWorld () ; Hier gehts los
    MP_Flip () ; 

Wend

End

DataSection
  logostart:
  IncludeBinary "c:\programme\purebasic\media\mp_logo.png" ; Mein MP Bild included
  logostop:
EndDataSection