Bonjour,
Je sais que ma question se pose plus sur OpenGL que SFML mais vous pourrez peut-être m'aider.
Je migre mon programme depuis SFML vers freeglut, j'ai donc du modifier les textures. pour les charger de façon différente. Seulement avec ces nouvelles textures, les shaders affichent des erreurs
ModelID not found ...
MatrixID not found ...
ViewID not found ...
LightID not found ...
MaterialAmbientID not found ...
MaterialSpecularID not found ...
vertexUVID not found ...
## ERROR: 1281: invalid value
mais en rajoutant la ligne :
new sf::Texture();
glutMainLoop();
Tout marche (même si la texture instanciée ne comporte aucune image, les textures openGL fonctionnent). J'avoue que ça ressemble à de la magie pour moi je suis allé voir l'instanciation d'une texture et il n'y a aucune fonction qui me semble régler mon problème.
Quand j'utilise la texture je fais cela :
GLuint LightID = glGetUniformLocation(this->shaderProgram, "LightPosition_worldspace");
if(LightID ==-1)
cout << "LightID not found ..." << endl;
GLuint MaterialAmbientID = glGetUniformLocation(this->shaderProgram, "MaterialAmbient");
if(MaterialAmbientID ==-1)
cout << "MaterialAmbientID not found ..." << endl;
GLuint MaterialSpecularID = glGetUniformLocation(this->shaderProgram, "MaterialSpecular");
if(MaterialSpecularID ==-1)
cout << "MaterialSpecularID not found ..." << endl;
glm::vec3 lightPos = glm::vec3(0,150,150);
glUniform3f(LightID, lightPos.x, lightPos.y, lightPos.z);
glUniform3f(MaterialAmbientID, MaterialAmbient.x, MaterialAmbient.y, MaterialAmbient.z);
glUniform3f(MaterialSpecularID, MaterialSpecular.x, MaterialSpecular.y, MaterialSpecular.z);
// Get a handle for our "myTextureSampler" uniform
GLuint TextureID = glGetUniformLocation(shaderProgram, "myTextureSampler");
if(!TextureID)
cout << "TextureID not found ..." << endl;
glActiveTexture(GL_TEXTURE0);
glBindTexture (GL_TEXTURE_2D, texture);
glUniform1i(TextureID, 0);
// 2nd attribute buffer : UVs
GLuint vertexUVID = glGetAttribLocation(shaderProgram, "color");
if(vertexUVID==-1)
cout << "vertexUVID not found ..." << endl;
glEnableVertexAttribArray(vertexUVID);
glBindBuffer(GL_ARRAY_BUFFER, color_array_buffer);
glVertexAttribPointer(vertexUVID, 2, GL_FLOAT, GL_FALSE, 0, 0);
Si quelqu'un pouvait apporter de l'eau à mon moulin j'en serais très reconnaissant.