Partage
  • Partager sur Facebook
  • Partager sur Twitter

40 secondes pour lancer un simple programme OpenGL

Sujet résolu
    27 février 2021 à 23:36:20

    Bonjour ou bonsoir alors voilà mon problème :

    J'essai d'apprendre la programmation graphique avec OpenGL mais je suis ralentis par ce problème. Mon ordi mets de plus en plus de temps à exécuter mon code, le build se fait toujours à la même vitesse mais cela peut mettre jusqu'à 40 secondes pour lancer un programme OpenGL où je crée simplement une fenêtre et ajoute deux triangles.

    Voici ce que ça fait dès que je lance le programme puis le résultat mais 40 secondes après avoir appuyé sur F5 :

    J'ai pris le screen dès que la fenêtre s'est ouverte, on peut voir que cela à mis 40 secondes et c'est très long pour avancer dans mon apprentissage.

    J'ai donc cherché à isoler la raison en faisant plusieurs tests :

    changement de disque : ne change rien

    écriture d'un simple programme (std::cout << "Test" << std::endl;) : pas d'attente

    ajout du programme et de visual studio 2019 dans mes exceptions d'anti-virus : ne change rien

    redémarrage de l'ordinateur : pas d'attente mais au bout d'une dizaine d'exécutions le problème revient en prenant d'abord 20sec puis 40.

    J'avais déjà remarqué ce problème quand je programmais avec pygame sur un petit jeu en python, l'exécution prenait environ une minute aussi.

    Je penses que cela vient de mon processeur ou d'un cache mystérieux mais ne connaissant rien sur le sujet je me diriges vers vous.

    Voici le code :

    #include <glad/glad.h>
    #include <GLFW/glfw3.h>
    
    #include <iostream>
    #include <fstream>
    
    int main(void) {
    	glfwInit();
    	glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    	glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    	glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    
    	GLFWwindow* window = glfwCreateWindow(800, 600, "I learn OpenGL", NULL, NULL);
    
    	if (window == NULL) {
    		std::cout << "Failed to create window" << std::endl;
    		glfwTerminate();
    		return -1;
    	}
    
    	glfwMakeContextCurrent(window);
    
    	if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
    		std::cout << "Failed to initialize GLAD" << std::endl;
    		return -1;
    	}
    
    	//Shaders --------------------------
    
    	
    
    	//Objects --------------------------
    	float vertices[] = {
    		 0.5f,  0.5f, 0.0f,  // top right
    		 0.5f, -0.5f, 0.0f,  // bottom right
    		-0.5f, -0.5f, 0.0f,  // bottom left
    		-0.5f,  0.5f, 0.0f   // top left 
    	};
    
    	unsigned int indices[] = {
    		0, 1, 3,
    		1, 2, 3
    	};
    
    	unsigned int VBO, VAO, EBO;
    	glGenVertexArrays(1, &VAO);
    	glBindVertexArray(VAO);
    
    	glGenBuffers(1, &VBO);
    	glGenBuffers(1, &EBO);
    
    	glBindBuffer(GL_ARRAY_BUFFER, VBO);
    	glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
    
    	glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
    	glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
    
    	glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);
    	glEnableVertexAttribArray(0);
    
    	glBindVertexArray(0);
    	
    	while (!glfwWindowShouldClose(window)) {
    
    		glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
    		glClear(GL_COLOR_BUFFER_BIT);
    
    		glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
    		glBindVertexArray(VAO);
    		glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
    
    		glfwPollEvents();
    		glfwSwapBuffers(window);
    	}
    
    	glfwTerminate();
    	return 0;
    }

    Et la config de mon ordinateur : 

    AMD Ryzen 7 2700x,

    NVIDIA GeForce RTX 2080,

    DD 2To 7200 tr/min

    SSD nvme 250go (pour windows)

    SSD 500go (où le projet est installé)

    Voilà où j'en suis, en vous remerciant d'avance pour votre aide :D

    -
    Edité par Coros 27 février 2021 à 23:39:10

    • Partager sur Facebook
    • Partager sur Twitter
      28 février 2021 à 12:07:44

      Ah oui,c'est pas normal du tout,surtout avec des SSD.

      Et pendant ces 40 secondes essaie de voir sur le gestionnaire de tâches le coupable !

      • Partager sur Facebook
      • Partager sur Twitter

      Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

      Anonyme
        28 février 2021 à 19:16:30

        Dans le doute.... "format c:" :p

        Et petit conseil, apprend direct opengl4.xx :)

        • Partager sur Facebook
        • Partager sur Twitter
          28 février 2021 à 19:52:14

          Je dirais même apprends directement le Vulkan.

          Quand tu lances le programme à l'extérieur sans passer par Visual Studio, le problème est il aussi toujours là ?

          • Partager sur Facebook
          • Partager sur Twitter

          git is great because Linus did it, mercurial is better because he didn't.

            28 février 2021 à 21:54:28

            Merci pour vos réponses, je comptais apprendre Vulkan quand je serais à l'aise avec la programmation graphique.

            Pour mon problème il semblerait que cela vienne de glfw, j'ai essayé de print des messages à différentes étapes du programme. J'ai remarqué un délai seulement après glfwInit();

            D'ailleurs oui j'avais essayé de lancer le programme sans Visual Studio et le problème persistait.

            Je vous tiens au courant de mes avancées mais j'accepte toujours votre expertise :p

            -
            Edité par Coros 28 février 2021 à 21:54:54

            • Partager sur Facebook
            • Partager sur Twitter
              28 février 2021 à 23:09:01

              Qu'en debug ? En release ? Et quid du gestionnaire de processus comme je te demandais plus haut ?

              Des trucs a 100% un process qui pompe un max ?

              • Partager sur Facebook
              • Partager sur Twitter

              Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

                1 mars 2021 à 1:07:44

                Ca ressemble beaucoup à ce qui est décrit là: https://discourse.glfw.org/t/glfw-has-long-delay-when-creating-a-window/1072 (1er lien d'une recherche google "glfw long startup delay").
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  1 mars 2021 à 9:04:59

                  markand a écrit:

                  Je dirais même apprends directement le Vulkan.

                  Ouai je pense que comme d'hab j'ai quelques années de retard :D

                  Sinon, sans rire pour son problème, il doit avoir un soucis sur son OS, un truc à la con qui lui bouffe 99.9% de de processeur, et des fois, vaut mieux passer quelques heures pour tout formater, que de galérer pendant plusieurs jours pour trouver le problème. Je sais...c'est bourrin....:D

                  • Partager sur Facebook
                  • Partager sur Twitter
                    1 mars 2021 à 9:14:33

                    >vaut mieux passer quelques heures pour tout formater,

                    Tout ça pour des drivers de carte graphique, voire de clavier (sic! cf. l'url donnée par @alexisdm), pas à jour ?

                    Oui, c'est un peu bourrin.

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                      1 mars 2021 à 21:36:58

                      Merci pour vos retours, pas de problèmes de processeur à 100% et le problème persiste que ça soit en debug ou en release, comme dans le post qu'alexisdm à partagé, cela vient de mon clavier. Je vais changer les drivers et le problème devrait être résolu.

                      EDIT : 

                      Le problème venait bien de mon clavier, j'ai mis à jour le driver et tout fonctionne très bien maintenant. Merci tout le monde pour votre aide :D

                      -
                      Edité par Coros 1 mars 2021 à 21:47:46

                      • Partager sur Facebook
                      • Partager sur Twitter
                        1 mars 2021 à 22:15:40

                        Alors la chapeau !

                        Autant le driver de carte graphique soit, mais le driver du clavier, je n'y aurais jamais pensé !o_O

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

                          2 mars 2021 à 3:53:33

                          Ton driver, c'etait un prototype en pâte à modeler ? :lol:
                          • Partager sur Facebook
                          • Partager sur Twitter
                            4 mars 2021 à 23:06:10

                            Deedolith a écrit:

                            Ton driver, c'etait un prototype en pâte à modeler ? :lol:


                            Je crois bien, j'ai développé une phobie envers mon Clavier maintenant :lol:
                            • Partager sur Facebook
                            • Partager sur Twitter

                            40 secondes pour lancer un simple programme OpenGL

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown