Toon posts:

[OpenGL/GLUT/Radeon 9600] GLUT_STEREO problemen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben momenteel bezig met het maken van een opstelling voor wat 3D-experimentjes. We willen hiervoor gebruiken:

* een Apple G5 met -- volgens mij -- een Radeon 9600 ("Device ID = 0x4150")
* twee monitoren
* twee spiegels

De videokaart ondersteunt dual output en het idee is om de image voor het linkeroog naar de ene monitor te sturen en die voor het rechteroog naar de andere en dan met behulp van spiegels (die in een hoek van 45 graden tov de monitoren staan) ervoor zorgen de output op de juiste manier naar de ogen gaat:

monitor1 2 spiegels monitor 2
| ---> \ / <--- |
| ---> \/ <--- |

oog1 oog2

Het probleem is dat ik het niet voor elkaar krijg om met OpenGL/GLUT de images op de verschillende monitoren te krijgen. Initialisatie doe ik als volgt:

code:
1
2
3
4
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_STEREO);
initGL(1024,768);
... etc


Het programma werkt goed op andere systemen (o.a. een PowerWall), maar bij deze opstelling dus niet. Wat er gebeurt is dat beide buffers (BACK_LEFT en -RIGHT) naar dezelfde monitor worden geschreven.

Ik vraag me nu ten eerste af of het een hardware danwel een software probleem is. Aangezien het zonder problemen op een 'Powerwall' wel werkt (waar gebruik wordt gemaakt van 2 kaarten) heb ik het idee dat de videokaart het misschien gewoon niet ondersteunt. Maar anderszijds, ik krijg geen error als ik glut initialiseer met GLUT_STEREO (terwijl ik dat bij 'normale' videokaarten wel krijg).

Heeft iemand jullie misschien een idee wat de oorzaak van het probleem is?

Nog wat gegevens:
- beide monitoren zijn in 10248x768 mode
- de 'secundaire' monitor laat een soort van extended desktop zien (mirroring staat uit), ook als ik het programma heb gestart
- als ik mirroring aan zet krijg ik beide buffers op beide schermen

Ik ben ook wat met glutGameMode aan het klooien geweest. Hier reageert de 2e monitor wel op, in de zin dat het scherm zwart wordt. Maar daarna klapt ie er uit met de error:

2004-07-22 15:03:17.222 vetedit[1860] GLUT Warning: The following is a new check for GLUT 3.0; update your code.
2004-07-22 15:03:17.222 vetedit[1860] GLUT Fatal Error: redisplay needed for window 2, but no display callback.

(de displayFunc wordt geregistreerd _voordat_ de gameMode wordt aangeroepen).

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-05 18:53

Bosmonster

*zucht*

Hier hebben we in W&G niet zoveel verstand van :)

Move W&G -> P&W

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 14:53

NMe

Quia Ego Sic Dico.

Ik heb zelf nooit met meerdere monitors gewerkt, en erg veel verstand van OpenGL/GLUT heb ik niet, maar eens ff wat checken... Je hebt 2 backbuffers, maar heb je ook 2 device contexts? Want die heb je volgens mij wel nodig. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Hmm, goed punt.. Hoe doe ik dat? :)

Of, om mee te beginnen, waar doe ik dat? Drivers? OS? OpenGL?

  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Verwijderd schreef op 27 juli 2004 @ 18:32:
Hmm, goed punt.. Hoe doe ik dat? :)

Of, om mee te beginnen, waar doe ik dat? Drivers? OS? OpenGL?
Dit doe je bij het initialiseren van je OpenGL "schetsboekje" ;)

Zoek eens naar de volgende functie's:
C++:
1
2
  devicecontext = GetDC(this->hwnd);
  rendercontext = wglCreateContext( devicecontext );

[ Voor 3% gewijzigd door eghie op 28-07-2004 13:06 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-05 23:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

Euhm...
Verwijderd schreef op 22 juli 2004 @ 15:17:
* een Apple G5 met -- volgens mij -- een Radeon 9600 ("Device ID = 0x4150")
Windows functies gaan niet echt werken op een apple, bovendien heeft hij het over GLUT (die intern weer de OS afhankelijke calls afhandelt) :)

Volgens mij heeft glut zelf geen ondersteuning voor meerdere monitoren. Stereo view is wat anders, dan wissel je op 1 monitor de beelden van je linker- en rechteroog steeds af, zodat je met een speciale shutter glass bril de beelden om en om voor je linker- en rechteroog kunt afschermen om zo een 3d effect te creeren. Wat jij wilt is echter gebruik maken van 2 verschillende monitoren, en dan zul je een afzonderlijke OpenGL context moeten creeren voor elke monitor. Dat kan bij mijn weten niet met GLUT, en dus zul je je OS API er eens bij moeten pakken

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Hee, bedankt... Ik denk dat ik al wat heb gevonden op de Apple site('aglCreateContext').
Pagina: 1