Aktuelle Zeit: 26.08.2019 02:06

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 215 Beiträge ]  Gehe zu Seite Vorherige  1 ... 17, 18, 19, 20, 21, 22  Nächste
Autor Nachricht
 Betreff des Beitrags: Re: MP3D Alpha 32
BeitragVerfasst: 27.11.2015 16:01 
Offline
Benutzeravatar

Registriert: 20.06.2013 23:27
So was in der Art habe ich mir schon gedacht, dass es nicht geht.
ich habe es so gelöst, dass ich ein 2tes normales Fenster drüber gelegt habe und dieses transparent mache und beide sticky.
geht auch.

werde aber deine Lösung auch ausprobieren. scheint eleganter :)
kannst es dir ja mal ansehen. da kann man bestimmt am code noch einiges verbessern?

komplett pack in PB 5.3 erstellt
http://www.datafilehost.com/d/77b66ad1
ich nutze PureColor lib und deine Lib :allright:


Ich hatte Epyx schon gefragt wegen dem Starfield, dass man es aufm Z index nciht nach hinten bekommt :( hast du eine idee? er meinte es könnte ein bug in deiner lib sein wenn ich mich recht entsinne.
ich hätte gern das starfield natürlich ganz hinten. z index 15 zb.

grüße

PS.
noch eine globale Frage zur Lib.
Erstellt man mit deiner Lib ein kleines Programm, startet dies und klickt in ein anderes Fenster. stoppt sämtlicher inhalt bis man wieder reinklickt. ein 3d würfel oder scroller bewegt sich nicht weiter.
Wie könnte man das umgehen?

_________________
PureBasic v5.30 + v5.44 LTS + v5.62 | Windows 7 x64 - Gforce GTX 950 - AMD FX6200 Six Core 3.80 | 26GB RAM


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: MP3D Alpha 32
BeitragVerfasst: 27.11.2015 22:45 
Offline
Benutzeravatar

Registriert: 14.06.2005 15:53
Wohnort: Berlin, Kreuzberg
Hi udg,

das Problem mit dem Starfield ist viel einfacher zu lösen. Dein Text ist ein Sprite und das Starfield eine 2d Funktion. Du must also nur die Renderreihenfolge ändern. Also erst 2d und danach Sprite rendern:

Also
Code:
MP_RenderWorld()
entspricht ungefähr
Code:
 MP_RenderBegin()
      MP_RenderCamera ()
      MP_RenderSky()
      MP_RenderSurface()
      MP_RenderParticle()
      MP_RenderMesh()
      MP_RenderPrimitives()
      MP_RenderAnimMesh()   
      MP_RenderSprite ()
      MP_RenderText ()
      MP_Render2D (); <- wird zuspät gerendert
   MP_RenderEnd()

Also ersetzt du in deinem Code einfach

Code:
MP_RenderWorld()


mit

Code:
  MP_RenderBegin()
      MP_RenderMesh()
      MP_Render2D () ; Vor RenderSprite also Hintergrund
      MP_RenderSprite ()
      MP_RenderText ()
   MP_RenderEnd()


(MP_RenderCamera () und so... wird gar nicht verwendet, daher kann man diese gleich draussen lassen)

PS.
noch eine globale Frage zur Lib. = stoppt sämtlicher inhalt

Hat vermutlich mit Vsync On zu tun. D.h. das Programm wartet auf ein VSync Signal was ja nicht kommen kann. Also Testprogramm schreiben und hier MP_VSync(0) einfügen. Hier must Du aber die Bewegungen dann zeitlich selber programmieren!

Gruß Michael

_________________
Working on - MP3D Engine -


Zuletzt geändert von mpz am 27.11.2015 23:05, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: MP3D Alpha 32
BeitragVerfasst: 27.11.2015 22:58 
Offline
Benutzeravatar

Registriert: 14.06.2005 15:53
Wohnort: Berlin, Kreuzberg
Hi,

Hier mal ein Vsync Off Berechnung

taste 1 = Vsync On / Speed normal
taste 2 = Vsync Off / Speed geht ab
taste 3 = Vsync Off / Speed wird berechnet

Gruß Michael

Code:
MP_Graphics3D (640,480,0,2) ; Erstelle ein WindowsFenster #Window = 0
         
camera=MP_CreateCamera() ; Kamera erstellen
light=MP_CreateLight(1) ; Es werde Licht

Mesh=MP_CreateCube() ; Und jetzt eine Würfel
MP_PositionEntity (Mesh,0,0,5) ; Position des Würfels

While Not MP_KeyDown(#PB_Key_Escape) And Not WindowEvent() = #PB_Event_CloseWindow; Esc abfrage oder Windows Schliessen

      MP_DrawText (1,1,"FPS = "+Str(mp_fps()) + " TurnVariable = "+StrF(time.f))
     
      If MP_KeyDown(#PB_Key_1) ; Vsync On Funktion
         MP_VSync(1)
         time.f = 1
         counttime = 0
      ElseIf MP_KeyDown(#PB_Key_2) ; ; Vsync Off Funktion
         MP_VSync(0)
         time.f = 1
         counttime = 0
      ElseIf MP_KeyDown(#PB_Key_3) ; Vsync Off Berechnung
         MP_VSync(0)
         counttime = 1
      EndIf
     
      If counttime
        time.f = 60/mp_fps()
      EndIf
     
      MP_TurnEntity (Mesh,0.1*time,0.2*time,0.3*time)
     
      MP_RenderWorld() ; Erstelle die Welt
      MP_Flip () ; Stelle Sie dar

Wend 

_________________
Working on - MP3D Engine -


Zuletzt geändert von mpz am 28.11.2015 16:47, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: MP3D Alpha 32
BeitragVerfasst: 28.11.2015 16:30 
Offline
Benutzeravatar

Registriert: 20.06.2013 23:27
Danke für deine tolle Antwort.

Ich wusste nicht, dass man
Code:
MP_RenderWorld()

noch prezisieren kann.

durch:
Code:
  MP_RenderBegin()
      MP_RenderMesh()
      MP_Render2D () ; Vor RenderSprite also Hintergrund
      MP_RenderSprite ()
      MP_RenderText ()
   MP_RenderEnd()

steht das in der Hilfe? Ich bin immer davon ausgegangen dass MP_RenderWorld() unbedingt aufgerufen werden muss damit es diese erstellt.

Jetzt kann ich das Starfield natürlich auf dem Z-Index verschieben :)

Jedoch habe ich noch ein Problem mit dem VSync. Um zu schauen was überhaupt passiert, habe ich dein Code Beispiel ausführen wollen. Bekomme jedoch folgenden Fehler:

Line 15: Variable already declared with another type: time.

Wenn man das Problem mit dem stoppen des Demo Fensters wenn es den Fokus verliert damit beheben kann, dann wäre das der Hammer. Dann muss das Epyx auch in den IM einbauen, denn dort ist genau das selbe Problem vorzufinden.

LG

_________________
PureBasic v5.30 + v5.44 LTS + v5.62 | Windows 7 x64 - Gforce GTX 950 - AMD FX6200 Six Core 3.80 | 26GB RAM


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: MP3D Alpha 32
BeitragVerfasst: 28.11.2015 16:49 
Offline
Benutzeravatar

Registriert: 14.06.2005 15:53
Wohnort: Berlin, Kreuzberg
Hu udg,

ich hatte den Code noch "aufgeräumt" und das erste time ohne time.f geschrieben. Jetzt funktioniert es wie es soll...

Gruß Michael

_________________
Working on - MP3D Engine -


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: MP3D Alpha 32
BeitragVerfasst: 28.11.2015 20:02 
Offline
Benutzeravatar

Registriert: 20.06.2013 23:27
Danke dir. :allright:

leider lässt sich das Ganze nicht stetig reproduzieren.
Was aber immer ist: wenn ich das Demo Fenster, dein Beispiel oder meins mit der Maus verschiebe, bleibt der Inhalt stehen und macht erst weiter wenn ich das Fenster wieder loslasse.
MP_VSync(1) steht nun drin

Was manchmal geht und manchmal nicht ist folgendes:
Starte Programm und alles läuft. klicke ich jetzt in ein anderes Windows Fenster, geht der Fokus verloren und der Inhalt des Demos bleibt stehen.

Das ist jedoch auch nicht immer der Fall. Woran könnte das genau liegen?

_________________
PureBasic v5.30 + v5.44 LTS + v5.62 | Windows 7 x64 - Gforce GTX 950 - AMD FX6200 Six Core 3.80 | 26GB RAM


Zuletzt geändert von udg am 28.11.2015 23:02, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: MP3D Alpha 32
BeitragVerfasst: 28.11.2015 22:20 
Offline
Benutzeravatar

Registriert: 01.04.2007 20:18
Da ich deinen Code nicht kenne, gehe ich einfach mal davon aus, dass es an deiner Event Loop liegt.

Du musst dafür sorgen, das die Eventschleife nirgendwo stehenbleiben kann... besonders nicht, wenn kein Event anliegt.

_________________
PureBasic 5.70 LTS (Windows x86/x64) | Windows10 Pro x64 | Z370 Extreme4 | i7 8770k | 32GB RAM | iChill GeForce GTX 980 X4 Ultra | HAF XF Evo​​


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: MP3D Alpha 32
BeitragVerfasst: 28.11.2015 23:01 
Offline
Benutzeravatar

Registriert: 20.06.2013 23:27
Eine gute Frage. Ich habe die Erfahrung schon vor Jahren gemacht, dass bei Verwendung der Effekte der mp3d lib, dann schon immer das Problem besteht. Ich kann auch nicht unbedingt feststellen ob es an der schleife liegt. Alles läuft. Entweder ist es eine while - wend, oder repeat - until - return bzw repeat - forever schleife. Diese arbeitet das 3D ab und simple Buttons. Mehr nicht. Vielleicht liegt es daran, dass ein direkt x 3d screen im Fenster erzeugt wird und dieser vom System der lib, den Fokus verliert wenn man das Fenster bewegt oder wie gesagt in ein anderes Fenster klickt. Ich poste später mal den Code. Obwohl der Code von mpz der selbe ist. Siehe seinem Post bzgl. Vsync. Stockt ebenso.

_________________
PureBasic v5.30 + v5.44 LTS + v5.62 | Windows 7 x64 - Gforce GTX 950 - AMD FX6200 Six Core 3.80 | 26GB RAM


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: MP3D Alpha 32
BeitragVerfasst: 29.11.2015 21:21 
Offline
Benutzeravatar

Registriert: 14.06.2005 15:53
Wohnort: Berlin, Kreuzberg
Hi udg,

das Problem gibt es bei allen dx9 Fensteranwendungen die ich kennen ( c++ demos, etc pp). Wenn Du das Fenster bewegst bleibt alles stehen. Vermutlich müsste man das DX9 als Thread oder so laufen lassen. Auch mit DX11 ändert das leider nichts.

Vieleicht weiß jemand woran es liegt...

Gruß Michael

_________________
Working on - MP3D Engine -


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: MP3D Alpha 32
BeitragVerfasst: 30.11.2015 16:25 
Offline
Benutzeravatar

Registriert: 20.06.2013 23:27
Danke für deine schnellen Antworten. Super.
Ich habe mir so was schon gedacht, dass es am DX Screen liegt. Egal, dann muss es so bleiben. Oder man müsste auf einen DX Screen verzichten. Ich habe einige Demos die normal weiterlaufen wenn man das Fenster mit der Maus verschiebt. Bei einem weis ich, dass es in Delphi programmiert ist. Aber kein Plan wie genau und warum wieso weshalb ;)
Ich möchte weiter mit PB arbeiten.

_________________
PureBasic v5.30 + v5.44 LTS + v5.62 | Windows 7 x64 - Gforce GTX 950 - AMD FX6200 Six Core 3.80 | 26GB RAM


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 215 Beiträge ]  Gehe zu Seite Vorherige  1 ... 17, 18, 19, 20, 21, 22  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye