Du bist nicht angemeldet.

Werbeanzeige

Till

Alter Hase

  • »Till« ist der Autor dieses Themas

Beiträge: 378

Wohnort: Lincoln College, Oxford

Beruf: Student

  • Private Nachricht senden

1

24.03.2004, 16:43

mehrere D3D-Devices

Hallo,

ich habe noch nirgends gesehen, dass igrgendjemand mehrere IDirect3DDevice9-Schnittstellen benutzt.
Aber ich habe es ausprobiert (gekapselt u. zwei Instanzen erstellt, die Unterschiedliche Hintergründe in unterschiedliche Fenster renderten)

Eigentlich soll man das aber doch mit SwapChains und Child-Windows machen, bringt es jetzt auch was, zwei Schnittstellen zu benutzen????

Kann man damit auch einfach eine Windows-Anwendung erstellen mit mehreren Grafik-Fenstern?
DOMINVS ILLVMINATIO MEA
---
Es lebe unmanaged Code!
---
>> Meine Uni <<

2

24.03.2004, 17:08

Pro Fenster kann man nicht mehrere Devices erstellen. Die dürften sich gegenseitig stören. Hierbei ist ein Fenster nicht die Anwendung, sondern der Darstellungsbereich.

Wenn du mehrere Darstellungsbereiche hast kannst du auch mehrere Devices erstellen. Pro Darstellungsbereich ein Device. Macht aber wenig Sinn, denn man muss z.B jede Textur pro Device erstellen. Denn ich denke nicht das man die Textur T die mit Device A erstellt wurde mit Device B darstellen kann. Probiert hab ich es noch nicht.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Till

Alter Hase

  • »Till« ist der Autor dieses Themas

Beiträge: 378

Wohnort: Lincoln College, Oxford

Beruf: Student

  • Private Nachricht senden

3

25.03.2004, 21:20

Hm, da fällt mir noch 'ne Frage ein:

Kann ich über ein Fenster einer anderen Anwendung rendern?
DOMINVS ILLVMINATIO MEA
---
Es lebe unmanaged Code!
---
>> Meine Uni <<

4

25.03.2004, 22:46

Du kannst in jedes Fenster Rendern dessen Window Handle du hast. Theoretisch könnte man deshalb auch in das Desktop Fenster rendern ;D
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Till

Alter Hase

  • »Till« ist der Autor dieses Themas

Beiträge: 378

Wohnort: Lincoln College, Oxford

Beruf: Student

  • Private Nachricht senden

5

27.03.2004, 21:39

Danke,

das ist ja cool. Das habe ich mir eigentlich schon gedacht, aber als ich das Handle eines Image-Fensters einer MFC-Anwendung in eine Datei gespeichert habe und zur selben Laufzeit mein D3D-Programm die Datei geladen und das Handle benutzt hat, hat das einfach nicht funktioniert!!! Danach kamen mir natürlich Zweifel.

Aber so versuche ich es noch mal!
DOMINVS ILLVMINATIO MEA
---
Es lebe unmanaged Code!
---
>> Meine Uni <<

6

28.03.2004, 00:40

lol kann ja auch nich funzen ^^ Das Handle ist jeden Start anders :)

Probiers mit FindWindow(0, "Name"); dann brauchst du keine Datei, für weitere Infos MSDN

7

28.03.2004, 00:52

Man kann zwar in jedes Fenster Rendern dessen Window Handle man hat, aber man sollte auf jeden fall wissen wessen Window Handle man hat. Nicht das du auf den Desktop malst ;D
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Anonymous

unregistriert

8

28.03.2004, 01:30

Zum thema devices: du kannst natürlich mehrere erstellen (ich hatte das zuerst auch vor), aber es ist ziemlich schlecht, wenn man mehrere gleiche Sachen läd. Darum würde ich zu der Methode IDirect3DDevice9::CreateAdditionalSwapChain raten.(ich habe es aber selbst noch nicht getestet) ;D

Till

Alter Hase

  • »Till« ist der Autor dieses Themas

Beiträge: 378

Wohnort: Lincoln College, Oxford

Beruf: Student

  • Private Nachricht senden

9

28.03.2004, 22:32

Ja, mit den SwapChains klappt's super! (war Anfangs nur ein bisschen verwirrend, mit IDirect3DDevice9::Presesnt() und IDirect3DSwapChain9::Present(), aber nun klappt's hervorragend )

Doch mit den Handles meine ich es so:

Ich habe eine Anwendung, die hat zur Laufzeit das Handle eines ihrer Fenster in eine Datei geschrieben und danach das Render-Programm mit WinExec aufgerufen, das die Datei sofort lädt und ihr Device auf das Handle ausrichtet.

DAS müsste doch klappen, oder??? Hat aber nicht. (Aber nach einer Transformation des Handles in einen String und die Übergabe per Command-Line (mit WinExec) und anschließender Dekodierung als Handle hat's sogar geklappt, weshalb ich vermute, es liegt an meinem Schreiben/Lesen von Dateien... :angel:

Und das mit dem FindWindow():
Das kann doch keine Child-Windows finden, oder??? Und außerdem brauche ich den Fensternamen (und/oder Fensterklassennamen), und der ist bei MFC-Fenstern (die benutz' ich eben) nicht so leich zugänglich...(oder etwa doch???)
DOMINVS ILLVMINATIO MEA
---
Es lebe unmanaged Code!
---
>> Meine Uni <<

Anonymous

unregistriert

10

29.03.2004, 13:53

warum in Gottes namen Winexec??? ???
mach es doch mit multithreading und lass die finder von mehreren exe datein. Wenn du fragen hast dann frag zu dem Thema.(wenn du vc++ ae hast musst du die sperre umgehen)

Werbeanzeige