Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   DirectX Shared Surfaces (https://www.delphipraxis.net/176289-directx-shared-surfaces.html)

SonnyBoyPro 24. Aug 2013 08:48

DirectX Shared Surfaces
 
Hallo zusammen,

bei MSDN gibts ein Beispiel für Shared Surfaces zwischen DX9 und DX10.1. Hat das zufällig schon jemand auf
Delphi / FPC übersetzt?

bg

SonnyBoyPro 26. Aug 2013 10:04

AW: DirectX Shared Surfaces
 
Hallo zusammen,

da bisher sehr viel Response war :wink: hab ich mich mal am WE hingesetzt und angefangen das Bsp auf Delphi umzucodieren. Die LIB ist zumindest mal mit den JSB Headern compilierbar. Sobald das Ding auch funktionstauglich ist meld ich mich :)

bg

PS: falls noch wer den Link auf die MSDN sucht:

http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

TiGü 27. Aug 2013 09:01

AW: DirectX Shared Surfaces
 
Was hast du denn vor?

Ich muss auch alten DirectDraw-Code ins 21. Jahrhundert bringen, aber ich habe mich dafür von Delphi verabschiedet.
Man ist immer auf Header-Übersetzungen angewiesen und das nervt spätestens beim nächsten Minior-Update von DirectX.
Ich programmiere dafür lieber alles notwendige in C++ und stelle die für das Delphi-Programm notwendige Funktionalität als Interface-Objekt aus einer DLL zu Verfügung.
Mit den neuen Direct2D Device und Device Context Interfaces kann man auch direkt mit Direct3D11 Devices und DXGI Swap Chains arbeiten.

Kennst du den Wrapper von Kenny Kerr?
http://msdn.microsoft.com/en-us/magazine/dn201741.aspx

Damit geht das Programmieren von DirectX-Anwendungen sehr schnell.

SonnyBoyPro 28. Aug 2013 11:41

AW: DirectX Shared Surfaces
 
Möchte Videos, DVD's und DVB-S2 wiedergeben. Da ich aber DVD's nicht geschafft habe per DirectShow Filter auf eine eigene Komponente zu rendern bleibt wohl nur der umweg über VMR9 (bzw EVR) und damit DX9(Ex).
Da eben auch BDA zum Einsatz kommen soll wird wohl die nächste Zeit hier kein Weg an DirectShow und VMR/EVR vorbeigehen.

Da HUD's aber auch ne feine Sache sind, wäre das direkte Rendern der GUI (vorteilhaft natürlich Direct2D) auf die DX9 Surface vorteilhaft.
Ansonsten bleibt wohl nur der Weg über eine eigene DX10.1 Surface die dann vor die DX9 gelegt wird (da sich ja 9 und 10 parallel gemeinsam verwenden lassen sollten).

C++ einzusetzen wäre zwar ne Variante, ich bin aber gerne Sprachen-Clean :wink:. Auf alle Fälle kein .NET !!!

Ursprünglich wollte ich ORCA (aus der PL) direkt für die GUI einsetzen, wird aber hier dann wohl zumindest auf der untersten Ebene ein paar Anpassungen geben müssen (ORCA geht ja mit D2D).

bg

TiGü 29. Aug 2013 07:18

AW: DirectX Shared Surfaces
 
Zitat:

Zitat von SonnyBoyPro (Beitrag 1226487)
Da HUD's aber auch ne feine Sache sind, wäre das direkte Rendern der GUI (vorteilhaft natürlich Direct2D) auf die DX9 Surface vorteilhaft.
Ansonsten bleibt wohl nur der Weg über eine eigene DX10.1 Surface die dann vor die DX9 gelegt wird (da sich ja 9 und 10 parallel gemeinsam verwenden lassen sollten).

Mit diesen ganzen Multimediakram von DirectShow und MediaFoundation kenne ich mich auch nicht aus.
Direct 2D Version 1.1 ist relativ neu, gibt es denn überhaupt vernünftige Pascal-Header für deine Zwecke?

Ich hätte keine Lust und Zeit mir die Header selber zu stricken.

Zitat:

Zitat von SonnyBoyPro (Beitrag 1226487)
C++ einzusetzen wäre zwar ne Variante, ich bin aber gerne Sprachen-Clean :wink:. Auf alle Fälle kein .NET !!!

Das finde ich zu engstirnig!

Ich habe auch früher gedacht: "Puh, C++...ne, dass ist mir zu kompliziert, ich bleibe bei Delphi", aber damit schießt man sich immer selber ins Knie.
Da man ja eh am Ende C/C++-Funktionen und Interface-Objekte von DirectX nutzt, wäre es hier "cleaner" direkt in der gleichen Sprache zu programmieren.
Probiere mal den Header von Kenny Kerr aus, dass programmiert sich dann recht flüssig wie in Delphi / C#.

SonnyBoyPro 29. Aug 2013 07:43

AW: DirectX Shared Surfaces
 
inzwischen gefällt mir die Variante mit C++ vielleicht doch nicht so schlecht.
Da auch sämtliche MSDN Examples in C++ sind...

welche IDE verwendest Du?

TiGü 29. Aug 2013 08:57

AW: DirectX Shared Surfaces
 
VisualStudio 2012

SonnyBoyPro 2. Sep 2013 13:17

AW: DirectX Shared Surfaces
 
Aktueller Zwischenstand:

VisualStudio 2012 installiert, Beispiele compiliert und funktionieren:
-DXGI Shared Surfaces (DX9 und DX11)
-DXGI D2D und DX10
-EVR Presenter Bsp von MSDN compiliert
-EVR Player compiliert.
Spielt Files ab, nur der der EVR Presenter stürtzt ab, irgendwie mag MediaFound kein xDiv ?!?

Soweit ich das momentan beurteilen kann ist das Thema DirectShow und DX11 alles andere als easy...

soweit ich das jetzt beurteilen kann:
- um DirectShow mit DX11 nutzen zu können braucht man Shared Surfaces
- für Shared Surfaces braucht man D3D9Ex.
- D3D9Ex funktioniert aber nur mit EVR


werd mir mal jetzt das EVR Presenter Example von MSDN genauer ansehen, falls da nichts brauchbares rauskommt
wird's wohl nur die Variante geben:
D3D9 mit VMR9 und die GUI per PNG's selber malen

TiGü 2. Sep 2013 14:21

AW: DirectX Shared Surfaces
 
In der MSDN steht ja auch viel alter Gammel drin.
Bin jetzt nicht so fit drin, aber soweit ich das verstanden habe, ist ja die Media Foundation der Ersatz für DirectShow:

Zitat:

Der erweiterte Videorenderer (EVR) ist eine Komponente, die Video auf dem Bildschirm des Benutzers anzeigt. Zwei Versionen des EVR sind vorhanden:
  • Die EVR-Mediensenke für Media Foundation-Anwendungen.
  • Der EVR-Filter für DirectShow-Anwendungen.

Kannst du dir nicht eine EVR Media Sink erstellen?

SonnyBoyPro 2. Sep 2013 15:53

AW: DirectX Shared Surfaces
 
hmm, MePo verwendet EVR
http://wiki.team-mediaportal.com/1_M...ering_Playback

soweit ich den MePo Code kenne ist aber alles DirectShow.

vielleicht liegts am Graph den die MS Beispiele bauen, muss ich noch checken.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:23 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz