Bonjour,
Je suis actuellement entrain de faire mon moteur 3D suite au tuto "moteur 3D c++" et je suis entrain de faire un loader de Model 3D en utilisant tous les type de textures.
J'ai un problème suite au chargement de shader qui m'empêche d'avancer dans mon loader pour les textures de normal.
J'ai réussie à compiler le shader sans problème aucune erreur est retourner mais des que j'essaye de lier un program créer (glLinkProgram) une erreur arrive mais le problème c'est qu'aucune infos n'est renvoyer.
J'ai bo regarder sur internet je n'arrive pas à trouver le moyen de trouver cette erreur.
voici les infos de ma carte graphique (je précise que j'essaye d'utiliser opengl 3) :
voici la fonction pour lier le program :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 char* Vendor = (char*)glGetString(GL_VENDOR); // "NVIDIA Corporation" char* Renderer_ = (char*)glGetString(GL_RENDERER); // "GeForce 9300M GS/PCIe/SSE2" char* version = (char*)glGetString(GL_VERSION); // 3.0.0
voici le code pour m'afficher l'erreur :
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 bool C_GLSLProgram::link(){ if (isLinked()) return true; if (m_handle <= 0) //return false; glLinkProgram(m_handle); if (CheckedErrorGLSLProgram(m_handle, GL_LINK_STATUS, "Link Status")){ deleteAllShader(); throw GLSLException("CheckedErrorGLSLProgram", "link"); return false; } else { m_params.clear(); m_linked = true; } return false; }
voici le Shader utiliser pour tester:
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
40
41 // rentre dans le if donc le program à bien été créer if (glIsProgram(p_progHandle)){ GLint programState = 0; CheckedGLCall(glGetProgramiv(p_progHandle, GL_LINK_STATUS, &programState)); if (programState != GL_TRUE){ int length = 0; std::string logString; CheckedGLCall(glGetProgramiv(p_progHandle, GL_INFO_LOG_LENGTH, &length)); if (length > 0) { char * c_log = new char[length]; int written = 0; CheckedGLCall(glGetProgramInfoLog(p_progHandle, length, &written, c_log)); logString = c_log; delete[] c_log; } std::ostringstream outLog; outLog << "Program Shader OpenGL Error in '" << File << "' at line: '" << Line << "\n\n" << "Error description : " << p_message << "\n : Error n°(" << programState << ")" << logString; C_ILogger::setLogger(new C_LoggerMsgBox); C_ILogger::Log() << outLog.str(); return true; } } else{ std::ostringstream outLog; outLog << "Program Shader OpenGL Error in '" << File << "' at line: '" << Line << "\n\n" << "Error description : \n" << p_message << "\n" << p_progHandle << " Program has not been compiled."; C_ILogger::setLogger(new C_LoggerMsgBox); C_ILogger::Log() << outLog.str(); }
Est-ce que quelqu'un aurais une idée pour m’orienter vers mes recherches pour afficher le problème? je vous remercie d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 #version 130 in vec3 aVertex; void main() { gl_Position = vec4(aVertex, 0.1); }
Partager