IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

linux, 2 cartes graphiques et utilisation de deux instances d'openGL simultanées


Sujet :

OpenGL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 41
    Par défaut linux, 2 cartes graphiques et utilisation de deux instances d'openGL simultanées
    bonjour , j'essaie, sur une machine qui dispose de deux cartes graphiques identiques , sur laquel est configurer deux bureau xorg, et où tout fonctionne... d'effectuer deux affichage simultannésur les deux bureau avec des fenetres X ( pas glut) dans une application multithread ( pour l'instant avec deux thread seulement ), mais en vain ...

    je crée dans le main mes deux thread avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    pthread_t 	th1, th2;
      void *ret;
     
      	if (pthread_create (&th1, NULL, my_thread_process, (char*)"Thread1") < 0) 
      	{
    	    fprintf (stderr, "pthread_create error for thread 1\n");
      	    exit (1);
      	}
     
      	if (pthread_create (&th2, NULL, my_thread_process, (char*)"Thread2") < 0) 
      	{
    	    fprintf (stderr, "pthread_create error for thread 2\n");
    	    exit (1);
      	}
     
      (void)pthread_join (th1, &ret);
      (void)pthread_join (th2, &ret);
    ensuite j crée la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    void *my_thread_process (void * arg)
    {
     if (!strcmp((char*) arg , "Thread1") )
            {
       	setenv("DISPLAY", ":0.0", 1);
        	NumThread=0;
    	} 
    	else if ((char*) arg == "Thread2")
    	{
    	   setenv("DISPLAY", ":0.1", 1);
    	   NumThread=1;
        }
     
        initDisplay(NumThread);
        initGLEW(NumThread);
     
    ..dessin de mon quad...
    avec initDisplay qui est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    void initDisplay(int NumThread)
    {
    	  	Display              *dpy;
    	  	XVisualInfo          *vi;
    	   	Colormap             cmap;
    	    XSetWindowAttributes swa;
    	    Window               win;
    	    GLXContext           cx;
    	    XEvent               event;
    	    /* get a connection */
     
    	 	dpy = XOpenDisplay(0);
     
    	 /* get an appropriate visual */
    	vi = glXChooseVisual(dpy, DefaultScreen(dpy), attributeList);
    	/* create a GLX context */
    	cx = glXCreateContext(dpy, vi, 0, GL_FALSE);
    	/* create a colormap */
    	cmap = XCreateColormap(dpy, RootWindow(dpy, vi-> screen), vi->visual, AllocNone);
    	/* create a window */
    	swa.colormap = cmap;
    	swa.border_pixel = 0;
    	swa.event_mask = StructureNotifyMask;
    	win = XCreateWindow(dpy, RootWindow(dpy, vi->screen), 0, 0, 100, 100, 0, vi->depth,
    						InputOutput, vi->visual, CWBorderPixel | CWColormap |
    						CWEventMask, &swa);
    	XMapWindow(dpy, win);
    	XIfEvent(dpy, &event, WaitForNotify, (char*)win);
    	/* connect the context to the window */
    	glXMakeCurrent(dpy, win, cx);
    }

    et initGLEW :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void initGLEW (int NumThread)
    {
    		glewContextInit(&_glewctx[NumThread]);
    }
    si quelqu'un peut un peu me guider...

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Par défaut
    Ca ne va pas t'aider, mais pour ma part je n'ai jamais réussi à faire qqchose de stable avec OpenGl + threads sous linux...

    Il me semble que les drivers fournis ne sont pas thread-safe (ATI, intel)...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 41
    Par défaut
    merci de ta réponse

Discussions similaires

  1. Mesurer l'utilisation mémoire d'une carte graphique
    Par Harry dans le forum Composants
    Réponses: 1
    Dernier message: 26/02/2007, 17h20
  2. cherche driver linux pour carte graphique
    Par blue dans le forum Matériel
    Réponses: 8
    Dernier message: 15/12/2006, 15h50
  3. [carte graphique] utiliser entree s-video
    Par nicoarrf dans le forum Composants
    Réponses: 11
    Dernier message: 17/11/2006, 13h08
  4. Réponses: 4
    Dernier message: 06/02/2006, 18h16
  5. [Linux-Windows] Quelle carte graphique 3D pour port PCI ?
    Par calogerogigante dans le forum Composants
    Réponses: 6
    Dernier message: 01/02/2006, 18h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo