ich muss eine recht einfache OpenGL Labyrinth Umgebung entwerfen. Allerdings soll diese Umgebung auf sechs Bildschirmen gleichzeitig zu sehen sein. Die sechs Bildschirme sind um den Betrachter im Sechseck aufgestellt und gesteuert wird das ganze durch zwei Rechner mit Quad Grafikkarten (jeder Rechner steuert dann drei Bildschirme an). Das Bild auf den Bildschirmen wird dem Betrachter sozusagen eine Rundumsicht um sich herum ermöglichen. Die Frage ist nun, ob und wie ich die einzelnen Ports der Grafikkarte ansteuern kann und ob das unter OpenGL überhaupt möglich ist. Gibt es ein Tutorial?
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Also Informationen wirst du darüber wohl nicht finden. Ich habe da auch schon häufig gesucht und so gut wie nichts sinnvolles gefunden. Es ist dann immer mehr oder weniger ein selber testen geworden. Als erstes solltest du bedenken, dass ein und der selbe RC nicht auf 2 unterschiedlichen Grafikkarten funktioniert. Das ist technisch nicht drin. Was aber geht ist wenn es 2 Monitore an ein und die selbe Karte sind. Dann handelt das die Karte intern alles. Da du aber sowieso 2 Unterschiedliche Rechner hast spielt das keine große Rolle.
Code:
Screen.MonitorCount
Screen.Monitors
Damit solltest du abfragen können was für Monitore im System eingebaut sind und wo sie sich befinden. Wie genau. Keine Ahnung. Habe ich bisher noch nicht gebraucht. Evtl musst du aber noch eine Zuweisung der Ansichten mit den Monitoren einbauen.
Es ist glaube ich das Beste wenn du auf jedem Monitor ein Vollbildfenster erstellst dabei aber nicht die Auflösung des Monitors veränderst. Das führt zu komischen Verschiebungen der anderen Monitore. Du erhältst dann also 3 RCs. Mit WglShareLists kannst dafür sorgen, dass alle 3 RCs sich ein und die selben Texturen und Listen teilen. Wenn du jetzt renderst musst du deine Szene 3 Mal rendern. Und zwar für jede Ansicht einmal. Ob du die jetzt am Besten in 3 Threads renderst oder wie auch immer weiß ich nicht. Du müsstest dabei vor allem drauf achten, dass du mit gluPerspective deine Ansichten so einstellst, dass diese eigentlich nur einen entsprechenden Ausschnitt darstellen.
Evtl wäre es auch möglich ein riesen Fenster zu machen und bei gluPerspektive einen Wert anzugeben, der aussagt, dass du gerne ein muchos breites Bild haben willst. Ich denke nicht, dass du das alleine mit der Breite regeln kannst. Und dann wird wahrscheinlich der Viewport zu groß werden.
Die Sache mit dem 2ten PC ist natürlich auch so ein Ding. Würde da mal behaupten, dass das Sinnvollste wäre, wenn du eine Renderapplication hast und die von einem Server gefüttert wird. Und der Server würde alle Statusinformationen an den Clienten übertragen um so sicherzustellen, dass alle das gleich Bild haben.
Das sind mehr oder weniger Theorien von mir. Habe so etwas bisher auch noch nicht gemacht. Hatte nur schön öfters mal mit 2 Monitoren / Grafikkarten zu tun. Was man aber nicht so wirklich vergleichen kann.
PS: Das eigentliche Rendern ist bei alle dem wohl das geringst Problem.
Ich bin mir nicht sicher, aber ich hab mal gehört, dass OGL im Gegensatz zu DirectX Probleme mit mehreren Monitoren hat. Allerdings war das in Bezug auf "normale" Grakas, wo du in 90% der Fälle eh nur einen Monitor dran hast, und dann vllt hin und wieder mal nen 2. Monitor oder nen Fernseher anschließt. Wie das jetzt mit deinen Grakas aussieht weiß ich nicht.
_________________ [18:30] tomok: so wie ich das sehe : alles. was nich was anderes ist als nen Essay ist nen Essay
hi, i'm a signature viruz, plz set me as your signature and help me spread
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich hab mich auch schon mit dem Thema beschäftigt.
Die Grafikkartentreiber bieten dir an wieviele Monitore, welcher an welcher stelle und wie sie behandelt werden sollen (clon screen,splitscreen horizontal/vertical).
In deinem Fall müssen die 3 monitore in horiziontalen splitscreen in passender nummerierung eingestellt werden.
Nun musst du deine application der auflösung entsprechend anpassen also bei 1024x768 je bildschirm wäre es (3x1024)x768=3072x768 Auflösung.
Nun solltest du bei der Perspectiven einstellung halt 180° einstellen.
Das der 2.PC das gleiche zeigt wie der erste nur halt die anderen 180° ist meiner meinung am besten über eine netzwerkschnittstelle lösbar.
Meine variante würde so aussehen ein server und ein clientprogramm.
Der server gibt nur den startschuss und die syncronisierung die clients machen die renderarbeit.
Wenn man es sich mal kurz durch den kopf gehen lässt ist das wie HLTV.
[EDIT]
Also probleme mit Splitscreen kenne ich nicht, vieleicht in ersten versuchen 2 und mehr ausgänge für bildschirm zu nutzen.
Ich hab z.B. ein Samsung 26" LCD TV über DVI anschluss und mein 17"TFT in splittscreen geschalten und keine probleme gehabt.
Der monitor hatte 1280x1024 und der TV hatte ne auflösung von 13xx x 11xx aber für ein opengl context musste ich dann auf 1280x1024 für beide einstellen.
Quake3 macht dann richtig spaß ^^.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Mi Aug 17, 2005 13:19 Beiträge: 98 Wohnort: Jahnsdorf
Für die Ansteuerung verweise ich dich mal auf das DSS von Omorphia. Bis dieses aber in einer überholten Version fertiggestellt ist, solltest Du mal einen Blick auf die OIncMonitors.pas werfen
Eine überarbeitete Version ist bereits in Arbeit, da das alte System bei uns nicht ausgereicht hat, um alle Informationen nach außen zu reichen bzw. vernünftig zu verwalten. Eine entsprechende Bildschirmsteuerung für Multimonitor-Arbeit ist aber vorhanden, genauso die Funktionen um Multimonitor die Auflösungen einzustellen und Koordinaten umrechnen zu können. Danach einfach auf jedem Monitor ein Fenster anlegen und den Kontext erzeugen und es sollte funzen.
Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.