Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

1

19.02.2013, 23:18

Multi-Monitor Rendering

Hallo zusammen,

ich habe seit heute einen zweiten 24 Zöller, weil mir Selbiger beim Arbeiten immer mehr gefehlt hat.
Vor allem beim Modellieren mit Blender oder Lesen von Dokumentationen während der Programmierung ist ein zweiter Bildschirm richtig praktisch und mit 135€ gar nicht mehr so kostspielig.

Jetzt will ich mich natürlich auch gleich mal an die Multi-Monitor Programmierung mit OpenGL und Direct3D (9 und 11) heranwagen.
Dazu hatte ich mir bereits mit GL überlegt, dass man dazu mehrere Render-Kontexte erstellen müsste und auch mehrere Fenster (also mehrere Instanzen von HGLRC und HWND).
Aber warum eigentlich? Warum sollte es nicht möglich sein, nur ein Fenster zu erstellen, und das über drei Displays hinweg zu verteilen. Bei einer FullHD Auflösung wäre das Fenster dann (1920*3) x 1080 Pixel groß.
Geht das? Wenn nein, warum nicht? Oder warum wäre es sinnvoller, das in mehrere Kontexte aufzuteilen?
Der Nachteil mit mehreren Kontexten ist natürlich, weil dann - zumindest in OpenGL - der interne Zustand komplett geändert werden müsste, wenn man die Kontexte wechselt.
Das ist nicht gerade performant.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

19.02.2013, 23:32

Geht das?

Ja

Oder warum wäre es sinnvoller, das in mehrere Kontexte aufzuteilen?

Nicht alle Bildschirme müssen an der selben Grafikkarte angeschlossen sein. Spätestens, wenn ein Fenster auf einem Bildschirm liegt, der nicht auf der Grafikkarte angeschlossen ist, auf der das Bild gerendert wird, wird das potentiell ineffizient (Unter XP wars iirc so extrem, dass eine mit 100+ fps laufende Anwendung zur Diashow wurde, sobald das Fenster auf einen anderen Bildschirm bewegt wurde, selbst wenn der Bildschirm auf der selben Grafikkarte angeschlossen war; Vista+ sollte das Problem nicht mehr haben). Und für den Fall, dass du mehrere Grafikkarten hast, willst du wohl potentiell von der Möglichkeit Gebrauch machen, auf mehreren Karten parallel zu rendern. Sowas wie ein exklusiver Fullscreen Modus ist mit der "ein großes Fenster Strategie" außerdem natürlich ein Ding der Unmöglichkeit.

Der Nachteil mit mehreren Kontexten ist natürlich, weil dann - zumindest in OpenGL - der interne Zustand komplett geändert werden müsste, wenn man die Kontexte wechselt. Das ist nicht gerade performant.

Meiner Erfahrung nach ist das eher kaum ein Problem, die einzelnen Kontexte vergessen ja nicht ständig alles und du könntest btw. auch parallel in mehreren Kontexten rendern...

Gut gemeinter Rat: Schau dir die Thematik zuerst mal unter Direct3D 11 an, dort ist das sauber und intuitiv gelöst. Allein der Gedanke, das wieder mal in OpenGL machen zu müssen, bereitet mir physischen Schmerz...

Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von »dot« (19.02.2013, 23:58)


Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

3

20.02.2013, 06:28

Warum sollte es nicht möglich sein, nur ein Fenster zu erstellen, und das über drei Displays hinweg zu verteilen. Bei einer FullHD Auflösung wäre das Fenster dann (1920*3) x 1080 Pixel groß.

Einerseits wegen dem, was bereits genannt wurde, andererseits weil nicht jeder, der mehrere Bildschirme hat, auch Bildschirme mit gleicher Auflösung hat bzw. diese alle genau nebeneinander platziert hat. Ein häufige Fall ist es, dass der 2. Bildschirm im Hochformatt verwendet wird (1080x1920). Dann wäre es ziemlich unsinnig, für beide ein einziges Fenster (3000x1920) erstellen zu wollen, von dem man dann eine Fläche von 1920x840 ignoriert. Noch gravierender wird es, wenn die Bildschirme nur an ihren Eckpunkten miteinander verbunden sind, bspw. weil es 1. und 3 Bildschirm sind (3840x2160).
(Abgesehen davon weiß ich nicht, wie lecht man an die Positionierung der Bildschirme kommen kann.)
Solange du nur für dich selbst rumprobierst und genau weißt, welche Auflösung und Bildschirmaufteilung du hast, dürfte das noch nicht weiter relevant für dich sein, aber ich denke mal, wenn man schon damit anfängt, kann man es auch gleich gut machen. ;)
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

4

20.02.2013, 10:57

Danke für die Tipps, ich habe eh Lust mal wieder mehr mit D3D11 zu machen :D

Werbeanzeige