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 :

Chargement de fichier et animation en même temps [OpenGL 3.x]


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Juin 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2017
    Messages : 7
    Par défaut Chargement de fichier et animation en même temps
    Bonjour,

    Je me permets d'ouvrir un nouveau sujet car après quelques recherches infructueuses sur le forum et sur internet je ne trouve aucune réponse à mon problème.
    En fait tout est dans le titre.
    Plus précisément, j'ai écrit un petit programme en C++ qui ouvre un fichier. Rien de plus simple. Le problème est que, le fichier étant de taille conséquente (environ 12 Mo, c'est une musique.ogg) il met un peu de temps à s'ouvrir. Alors pour faire patienter l'utilisateur (de mon programme) je voudrais afficher une petite animation, comme par exemple un cube qui tourne (en OpenGL bien sûr).
    Je vous rassure, je sais afficher et faire tourner un cube en OpenGL, de la même manière que je sais ouvrir un fichier. Mais comment faire les deux en même temps ??
    J'ai vu des tutos sur le multithreading, mais Est-ce la bonne voie ? Ou bien y'a-t-il une manière simple de réaliser ce que je veux faire. Dans les jeux, c'est monnaie courante alors ça doit forcément être possible

    Je vous remercie par avance pour votre aide.

    Bien cordialement
    Cedrian

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 162
    Billets dans le blog
    4
    Par défaut
    Salut,

    oui le multi-threading est la solution.
    Le main thread émet une requête de chargement et un loading thread traite ces requêtes. Permettant au main thread de continuer son affaire, à commencer par exemple par afficher un écran de chargement tant que les requêtes ne sont pas terminées.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre régulier
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Juin 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2017
    Messages : 7
    Par défaut
    Merci pour votre retour rapide.

    Ok je vais donc devoir me mettre au multithreading.

    En fait, en C++ tout seul, je comprends a peu près comment ça marche et j'arrive à faire des trucs simples. Mais avec le contexte OpengGL (j'utilise openGL 3.3, GLFW 3.2, GLEW, sndlib pour charger mes sons, openAL, GLM, et d'autres librairies perso) je suis un peu perdu... Connaissez-vous un tutoriel, une vidéo ou bien un livre qui pourrait m'aider à y voir plus clair ?

    Merci encore
    Cedrian

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 162
    Billets dans le blog
    4
    Par défaut
    OpenGL n'a rien à voir là-dedans. Les threads sont du C++ purs. Que tu utilises un moteur OpenGL, SDL, SFML, DirectX ou que sais-je, le principe est le même.
    Il peut y avoir d'éventuelles manips pour récupérer le contexte dans un thread différent (mes travaux en OpenGL datent de plusieurs années), mais rien d'insurmontable réellement, juste une petite réflexion à avoir si le problème est rencontré.
    Donc à part googler C++ thread, et savoir manipuler un mutex, y'a rien de compliqué normalement.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 036
    Billets dans le blog
    12
    Par défaut
    Pour la partie multithreading et OpenGL, au final c'est assez simple : tu ne le fais pas.
    Tu peux avoir OpenGL qui tourne dans un thread à part, ça ne pose pas de soucis.
    Par contre tu ne joues pas à tenter de synchro plusieurs threads OpenGL, les performances seront catastrophiques, dues aux switch de contexte : il faut savoir qu'il faut un contexte par thread, et que lorsqu'un thread doit travailler sur des OpenGL, il doit activer son contexte ce qui est une opération coûteuse.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  6. #6
    Membre régulier
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Juin 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2017
    Messages : 7
    Par défaut
    Bonjour,

    je vous remercie pour vos réponses.
    Non bien sûr il ne s'agit pas de créer des contextes OpenGL répartis dans plusieurs thread... suis pas fou quand même

    Je veux juste pouvoir afficher des animations à l'écran tout en chargeant un fichier volumineux qui prend un peu de temps à charger.
    Ok je vais me mettre au mutlithreading.

    Merci encore !
    Bien cordialement,

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

Discussions similaires

  1. [WD17] Ecrire sur 3 fichiers de données en même temps
    Par bili31 dans le forum WinDev
    Réponses: 4
    Dernier message: 01/11/2015, 20h27
  2. Android studio tous les fichiers sons joué en même temps
    Par hypermc dans le forum Android Studio
    Réponses: 1
    Dernier message: 10/10/2015, 00h20
  3. Réponses: 2
    Dernier message: 10/08/2012, 11h16
  4. Voir deux fichier en même temps ?
    Par dr23fr dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 07/09/2006, 12h11
  5. [DOS] exécuter 2 fichiers en même temps
    Par toninio dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 04/04/2006, 17h58

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