Bonjour à tous

Ceci n'est pas réellement un problème mais une question qui me taraude depuis une heure sans que je parvienne à trouver la réponse sur internet.
J'utilise 2 shaders attachés à un programme que je link :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
glAttachShader(m_program,m_vertexShader->getShaderId());
glAttachShader(m_program,m_fragmentShader->getShaderId());
glLinkProgram(m_program);
Pour pouvoir facilement accéder aux éventuelles erreurs, un petit ensemble de lignes de codes suffit :
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
32
33
34
35
36
37
38
39
GLsizei logsize = 0;
    GLint compileStatus = GL_TRUE;
    char *log = NULL;
    glGetProgramiv(m_program, GL_COMPILE_STATUS, &compileStatus);
    if(compileStatus!=GL_TRUE)
    {
        glGetProgramiv(m_program, GL_INFO_LOG_LENGTH, &logsize);
 
        log = new char[logsize+1];
        if(log==NULL)
        {
            std::cout<<"Probleme d'allocation memoire, impossible de recuperer l'erreur de chargement du programme";
            if(m_vertexShader!=NULL&&m_fragmentShader!=NULL)
                std::cout<<" contenant "<<m_vertexShader->getFileName()<<" et "<<m_fragmentShader->getFileName()<<std::endl;
            else if(m_vertexShader!=NULL)
                std::cout<<" contenant "<<m_vertexShader->getFileName()<<std::endl;
            else if(m_fragmentShader!=NULL)
                std::cout<<" contenant "<<m_fragmentShader->getFileName()<<std::endl;
            else
                std::cout<<std::endl;
            return;
        }
 
        log[logsize] = '\0';
        glGetProgramInfoLog(m_program, logsize, &logsize, log);
        std::string ErrorsWarnings(log);
        std::cout<<"Impossible de compiler le programme";
        if(m_vertexShader!=NULL&&m_fragmentShader!=NULL)
            std::cout<<" contenant "<<m_vertexShader->getFileName()<<" et "<<m_fragmentShader->getFileName()<<std::endl;
        else if(m_vertexShader!=NULL)
            std::cout<<" contenant "<<m_vertexShader->getFileName()<<std::endl;
        else if(m_fragmentShader!=NULL)
            std::cout<<" contenant "<<m_fragmentShader->getFileName()<<std::endl;
        else
            std::cout<<std::endl;
        std::cout<<">>> "<<ErrorsWarnings<<std::endl;
 
        delete log;
    }
Voici mon problème : j'ai 2 shaders parfaitement chargés qui ne génèrent aucune erreur et qui sont attachés au programme. Je link le programme et récupère les erreurs.
Au départ, mes shaders étaient plus ou moins corrects donc les erreurs étaient justifiées mais après correction le glLinkProgram entraine GL_COMPILE_STATUS à false, et donc l'affichage d'une erreur liée au programme.
Voici cette erreur, qui n'en est pas une
Code : Sélectionner tout - Visualiser dans une fenêtre à part
fragment shader(s) linked, vertex shader(s) linked
C'est donc pour moi totalement incompréhensible puisque le shader fonctionne correctement mais GL_COMPILE_STATUS est quand même à false après le link du programme.

Une explication ?

Je voulais également savoir ce qui déterminais la valeur de la fonction
Si vous pouvez m'éclairer n'hésitez pas