OpenGL glGetError 1281 mauvaise valeur
Je suis en utilisant OpenGL avec les sommets et les shaders, rien n'a été affiché sur mon écran j'ai donc utilisé glGetError debug : j'ai eu une erreur 1281(mauvaise valeur) sur un de mes tampons appelé color_array_buffer, voici l'article dont je parle :
GLenum error = glGetError();
if(error) {
cout << error << endl;
return ;
} else {
cout << "no error yet" << endl;
}
//no error
//Get a handle for our "myTextureSampler" uniform
GLuint TextureID = glGetUniformLocation(shaderProgram, "myTextureSampler");
if(!TextureID)
cout << "TextureID not found ..." << endl;
//Bind our texture in Texture Unit 0
glActiveTexture(GL_TEXTURE0);
sf::Texture::bind(texture);
//Set our "myTextureSampler" sampler to user Texture Unit 0
glUniform1i(TextureID, 0);
//2nd attribute buffer : UVs
GLuint vertexUVID = glGetAttribLocation(shaderProgram, "color");
if(!vertexUVID)
cout << "vertexUVID not found ..." << endl;
glEnableVertexAttribArray(vertexUVID);
glBindBuffer(GL_ARRAY_BUFFER, color_array_buffer);
glVertexAttribPointer(vertexUVID, 2, GL_FLOAT, GL_FALSE, 0, 0);
error = glGetError();
if(error) {
cout << error << endl;
return ;
}
//error 1281
Et voici le code où j'ai un lien sur mon tampon au tableau :
if (textured) {
texture = new sf::Texture();
if(!texture->loadFromFile("textures/simple.jpeg"/*,sf::IntRect(0, 0, 128, 128)*/))
std::cout << "Error loading texture !!" << std::endl;
glGenBuffers(1, &color_array_buffer);
glBindBuffer(GL_ARRAY_BUFFER, color_array_buffer);
glBufferData(GL_ARRAY_BUFFER, uvs.size() * sizeof(glm::vec3), &uvs[0], GL_STATIC_DRAW);
}
et de mes valeurs d'uv :
uv[0] : 0.748573-0.750412
uv[1] : 0.749279-0.501284
uv[2] : 0.99911-0.501077
uv[3] : 0.999455-0.75038
uv[4] : 0.250471-0.500702
uv[5] : 0.249682-0.749677
uv[6] : 0.001085-0.75038
uv[7] : 0.001517-0.499994
uv[8] : 0.499422-0.500239
uv[9] : 0.500149-0.750166
uv[10] : 0.748355-0.99823
uv[11] : 0.500193-0.998728
uv[12] : 0.498993-0.250415
uv[13] : 0.748953-0.25092
Je fais quelque chose de mal, si quelqu'un pouvait m'aider ce serait génial.
- J'ai donc essayé pour limiter l'erreur, le problème vient de glEnableVertexAttribArray(vertexUVID); ce qui déclenche cette erreur, mais je ne comprends pas pourquoi.
Vous devez vous connecter pour publier un commentaire.
Votre chèque de
glGetAttribLocation()
, à défaut de trouver l'attribut est incorrect:glGetAttribLocation()
renvoie uneGLint
(pasGLuint
), et le résultat est-1
si un attribut dont le nom n'est pas trouvé dans le programme. Puisque vous affectez la valeur d'un entier non signé de la variable, il va finir par être la plus grande possible, non signé, qui est alors un argument non valide si vous le passez àglEnableVertexAttribArray()
par la suite.Votre code devrait ressembler à ceci à la place:
Noter que
0
est parfaitement valide attribut emplacement.