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 :

"wglMakeCurrent" sous Linux


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 177
    Par défaut "wglMakeCurrent" sous Linux
    Bonjour voila je tente de faire du code portable et je me demandais si sous linux on devais faire un equivalent de "wglMakeCurrent" par thread aussi. wglMakeCurrent semble etre purement microsoft. Il y a sous Win 1 Context OpenGL par thread. Est ce pareil en Linux ?

  2. #2
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 580
    Par défaut Re: "wglMakeCurrent" sous Linux
    wglMakeCurrent semble etre purement microsoft
    comme toutes les fonctions wgl*

    Il y a sous Win 1 Context OpenGL par thread.
    1 par thread ? tu as vu cela ou ? un thread est un process, tu confond peut-etre avec autre chose non ?
    le context opengl doit correspondre à une "sortie" opengl, un affichage, donc tu dois en avoir un par affichage, 1 seul si tu ne crée qu'une seule vue ou même si tu as plusieurs vues au sein d'une même fenêtre. un modeleur 3D pourrait créer plusieurs contexte, un pour chaque vue, pas forcément dans plusieurs threads.

    je tente de faire du code portable
    je te conseille plutot de te rabattre sur une bibliothèque de fenêtrage
    comme l'a dit Bafman dans un autre post, la bibliothèque glut est facile à utiliser, sinon il y a SDL
    les avantages c'est clairement le côté portable en plus d'avoir quelque chose qui est éprouvé et qui fonctionne à coup sûr
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  3. #3
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Je crois que j'ai compris ce que "Heptaeon" voulait dire : j'ai eu ce genre de prob : je crée le context dans mon programme et j'essai de dessiner avec une DLL, ça cause une erreur, faut appeler au départ de la DLL activateRenderingContext, qui je pense (je ne suis pas sur vu qu'elle demande un HDC) devrait être portable.

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 177
    Par défaut Re: "wglMakeCurrent" sous Linux
    Citation Envoyé par shenron666

    Il y a sous Win 1 Context OpenGL par thread.
    1 par thread ? tu as vu cela ou ? un thread est un process, tu confond peut-etre avec autre chose non ?
    le context opengl doit correspondre à une "sortie" opengl, un affichage, donc tu dois en avoir un par affichage, 1 seul si tu ne crée qu'une seule vue ou même si tu as plusieurs vues au sein d'une même fenêtre. un modeleur 3D pourrait créer plusieurs contexte, un pour chaque vue, pas forcément dans plusieurs threads.
    Par test quant je me suis casser les dents en codant. Et ca a ete confirmé par le RedBook que je vient d'éplucher ^^. En faite je Precise par, Un seul peu etre le courrant a la fois. Et je parle bien de Thread.

    To make a rendering context current, use glXMakeCurrent(); glXGetCurrentContext() returns the
    current context. You can also obtain the current drawable with glXGetCurrentDrawable() and the
    current X Display with glXGetCurrentDisplay(). Remember that only one context can be current for
    any thread at any one time
    . If you have multiple contexts, you can copy selected groups of OpenGL state
    variables from one context to another with glXCopyContext(). When you're finished with a particular
    context, destroy it with glXDestroyContext().
    Citation Envoyé par shenron666
    je tente de faire du code portable
    je te conseille plutot de te rabattre sur une bibliothèque de fenêtrage
    comme l'a dit Bafman dans un autre post, la bibliothèque glut est facile à utiliser, sinon il y a SDL
    les avantages c'est clairement le côté portable en plus d'avoir quelque chose qui est éprouvé et qui fonctionne à coup sûr
    Non je fait ca a la Quake3 avec un Core par type d'OS. Je ne vise que Linux et Win donc ca va ^^.

    A présent, c'est réglé je sais que c'est pareil en Linux ^^.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 177
    Par défaut
    Citation Envoyé par Modjo
    Je crois que j'ai compris ce que "Heptaeon" voulait dire : j'ai eu ce genre de prob : je crée le context dans mon programme et j'essai de dessiner avec une DLL, ça cause une erreur, faut appeler au départ de la DLL activateRenderingContext, qui je pense (je ne suis pas sur vu qu'elle demande un HDC) devrait être portable.
    Merci pour l'info je risque d'utiliser des DLL ^^

  6. #6
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 580
    Par défaut Re: "wglMakeCurrent" sous Linux
    Citation Envoyé par Heptaeon
    En faite je Precise par, Un seul peu etre le courrant a la fois. Et je parle bien de Thread.
    Là dessus oki
    encore que, il est peut-etre possible d'en activer plusieurs si on a plusieurs renderers (plusieurs cartes graphiques)
    pas les moyens de tester

    Non je fait ca a la Quake3 avec un Core par type d'OS. Je ne vise que Linux et Win donc ca va ^^.
    Bon courage
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  7. #7
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    hop juste pour info, macOS X permet d'avoir plusieurs context openGL qui tournent en même temps...
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 177
    Par défaut
    En avoir plusieur n'est pas un probleme mais peu tu les utiliser en meme temps ?

    Si oui ca sert a quoi ??

  9. #9
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Si c'est oui, je pense que ce serait très utile : un exemple :
    deux applis qui tournent en // : la première est par exemple une merveilleuse visualisation openGL de Winamp, et l'autre une magnifique démo, toutes les deux en mode fenêtré, chacune ayant son propre contexte qui doit etre actif et tourner tout le temps pour avoir des resultats potables.

  10. #10
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 177
    Par défaut
    La tu parle de programme completement différent qui tourne en meme temps. Mais a partir de Process completement différent c'est pour tous. Je veux dire que si je lance 2 foix mon programme en windows ou si je lance mon programme avec Quake3 ca ne pose aucun probleme ^^.

    Donc la a la base je parlais bien de Threads différent travaillant avec la même fenêtre.

    Je supose que Bafman parlais dans la même application. Donc ca voudrais dire un moteur de rendu partitioner en plusieurs Thread.

    J'ai deja vu ca :
    Tessellator Performance Tips
    For best performance, remember these rules.
    Cache the output of the tessellator in a display list or other user structure. To obtain the
    post-tessellation vertex coordinates, tessellate the polygons while in feedback mode. (See
    "Feedback" in Chapter 13.)
    1.
    Use gluTessNormal() to supply the polygon normal. 2.
    Use the same tessellator object to render many polygons rather than allocate a new tessellator for
    each one. (In a multithreaded, multiprocessor environment, you may get better performance using
    several tessellators.)
    3.
    Mais vu que je ne sais pas ce qu'est un Tessellator. Je ne comprend pas vraiment lol. Ca vient du Red Book

  11. #11
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    typiquement c'est le genre de truc qui pourrait etre utilisé sous vista, non pas pour crée plusieurs context openGL forcement, mais pour crée un context D3D et un context openGL qui ne sont pas concurrents sur la carte graphique, ou encore avoir des sortes de context dans les context... bref il existe plein de possibilitée a ce truc
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Caractere echappement (quote) et variables sous pgsql
    Par tonio.jt dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 11/10/2009, 21h06

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