MP3D Alpha 32

Du brauchst Grafiken, gute Programme oder Leute die dir helfen? Frag hier.
Benutzeravatar
udg
Beiträge: 560
Registriert: 20.06.2013 23:27

Re: MP3D Alpha 32

Beitrag von udg »

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?
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE! TOP. Kauft Eure Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
mpz
Beiträge: 497
Registriert: 14.06.2005 15:53
Computerausstattung: Win 10 Pro, 16 GB Ram, Intel I5 CPU und TI1070 Grafikkarte, PB 5.73 / 6.00 beta4
Wohnort: Berlin, Tempelhof

Re: MP3D Alpha 32

Beitrag von mpz »

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: Alles auswählen

MP_RenderWorld()
entspricht ungefähr

Code: Alles auswählen

 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: Alles auswählen

MP_RenderWorld()
mit

Code: Alles auswählen

  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
Zuletzt geändert von mpz am 27.11.2015 23:05, insgesamt 1-mal geändert.
Working on - MP3D Engine -
Benutzeravatar
mpz
Beiträge: 497
Registriert: 14.06.2005 15:53
Computerausstattung: Win 10 Pro, 16 GB Ram, Intel I5 CPU und TI1070 Grafikkarte, PB 5.73 / 6.00 beta4
Wohnort: Berlin, Tempelhof

Re: MP3D Alpha 32

Beitrag von mpz »

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: Alles auswählen

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  
Zuletzt geändert von mpz am 28.11.2015 16:47, insgesamt 1-mal geändert.
Working on - MP3D Engine -
Benutzeravatar
udg
Beiträge: 560
Registriert: 20.06.2013 23:27

Re: MP3D Alpha 32

Beitrag von udg »

Danke für deine tolle Antwort.

Ich wusste nicht, dass man

Code: Alles auswählen

MP_RenderWorld()
noch prezisieren kann.

durch:

Code: Alles auswählen

  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
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE! TOP. Kauft Eure Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
mpz
Beiträge: 497
Registriert: 14.06.2005 15:53
Computerausstattung: Win 10 Pro, 16 GB Ram, Intel I5 CPU und TI1070 Grafikkarte, PB 5.73 / 6.00 beta4
Wohnort: Berlin, Tempelhof

Re: MP3D Alpha 32

Beitrag von mpz »

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 -
Benutzeravatar
udg
Beiträge: 560
Registriert: 20.06.2013 23:27

Re: MP3D Alpha 32

Beitrag von udg »

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?
Zuletzt geändert von udg am 28.11.2015 23:02, insgesamt 1-mal geändert.
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE! TOP. Kauft Eure Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
Bisonte
Beiträge: 2427
Registriert: 01.04.2007 20:18

Re: MP3D Alpha 32

Beitrag von Bisonte »

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 6.04 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Benutzeravatar
udg
Beiträge: 560
Registriert: 20.06.2013 23:27

Re: MP3D Alpha 32

Beitrag von udg »

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.
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE! TOP. Kauft Eure Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
mpz
Beiträge: 497
Registriert: 14.06.2005 15:53
Computerausstattung: Win 10 Pro, 16 GB Ram, Intel I5 CPU und TI1070 Grafikkarte, PB 5.73 / 6.00 beta4
Wohnort: Berlin, Tempelhof

Re: MP3D Alpha 32

Beitrag von mpz »

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 -
Benutzeravatar
udg
Beiträge: 560
Registriert: 20.06.2013 23:27

Re: MP3D Alpha 32

Beitrag von udg »

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.
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE! TOP. Kauft Eure Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Antworten